سلام دوستان من یه جدول 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();
دمتم گرم که وقت گذاشتی.
سلام وقتتون بخیر!
ظاهرا نباید مشکلی داشته باشه
بهتره توی کنترلر بیای $turns رو return کنی ببینی چی توشه.
برای شماره ردیف هم نیاز نیست $i رو هی اضافه کنی
@foreach($turns as $key=>$turn)
الان key رو چاپ کنی حل میشه
@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();
دمتم گرم که وقت گذاشتی.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟