سلام دوستان من یه جدول users دارم که کاربران داخلش ثبت میشن و یه جدول doctors که با جدول users ارتباط داره. به صورت زیر:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('firstName');
$table->string('lastName');
$table->string('mobile')->unique();
$table->string('idNumber')->unique();
$table->string('role')->default('user');
$table->string('password');
$table->timestamps();
});
Schema::create('doctors', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->onDelete('CASCADE')->onUpdate('CASCADE');
$table->string('specialty');
$table->string('degree');
$table->string('image');
$table->timestamps();
});
یه جدولم (turns) دارم واسه ثبت نوبت که کاربرایی که میان از یه دکتر نوبت میگیرن داخل این جدول ثبت میشه. به صورت زیر:
Schema::create('turns', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->onDelete('CASCADE')->onUpdate('CASCADE');
$table->integer('doctor_id');
$table->string('firstName');
$table->string('lastName');
$table->string('specialty');
$table->string('day');
$table->integer('hour');
$table->timestamps();
});
حالا وقتی میخوام تو پنل دکتر بیمارایی که اومدن با اون دکتر نوبت گرفتن رو نمایش بدم از دستور زیر داخل کنترلر استفاده میکنم ولی نتیجه درست رو بهم نشون نمیده.
$turns = Turn::select('user_id', 'doctor_id')->where('doctor_id', auth()->user()->id)->paginate();
ویو هم به صورت زیر است:
@php
$i = 1;
@endphp
@foreach($turns as $turn)
<tbody>
<tr>
<td>{{ $i++ }}</td>
<td>{{ $turn->user()->get()->first()->firstName }} {{ $turn->user()->get()->first()->lastName }}</td>
<td>{{ $turn->getCreatedAtJalali() }}</td>
<td>{{ $turn->day }}</td>
<td>{{ $turn->hour }}</td>
</tr>
</tbody>
@endforeach
کوئری که نوشتم کجاش مشکل داره؟
@Rp76
سلام رضا جان.
مشکل از جای دیگه بود، من اومدم قسمت کنترلر ثبت نوبت رو نگاه کردم و قسمتی که میخواستم آیدی دکتر رو ثبت کنم به صورت زیر عمل میکردم که اشتباه بود:
'doctor_id' => $doctor->id
و درستش میشه کد زیر:
'doctor_id' => $doctor->user()->get()->first()->id
و الان با کوئری زیر نتایج به درستی نمایش داده میشن.
$turns = Turn::select('user_id', 'day', 'hour')->groupBy('user_id', 'day', 'hour')->where('doctor_id', auth()->user()->id)->paginate();
دمتم گرم که وقت گذاشتی.
شاید پاسخ شما همینجا باشد