راکت
حل شده

گرفتن اطلاعات

2 پاسخ

سلام دوستان من یه جدول 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

کوئری که نوشتم کجاش مشکل داره؟

ثبت پرسش جدید

پاسخ‌ها

2
Armin Rahmati
Armin Rahmati
@arminrahmati999
بهترین پاسخ

@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();

دمتم گرم که وقت گذاشتی.

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

سلام وقتتون بخیر!
ظاهرا نباید مشکلی داشته باشه
بهتره توی کنترلر بیای $turns رو return کنی ببینی چی توشه.
برای شماره ردیف هم نیاز نیست $i رو هی اضافه کنی

  @foreach($turns as $key=>$turn)

الان key رو چاپ کنی حل میشه

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام