Armin Rahmati
4 سال پیش توسط Armin Rahmati مطرح شد
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

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


ثبت پرسش جدید
Armin Rahmati
@arminrahmati999 4 سال پیش آپدیت شد
0

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

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


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

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

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

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


Armin Rahmati
@arminrahmati999 4 سال پیش آپدیت شد
0

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

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


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

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