راکت
Armin Rahmati
Armin Rahmati
5 سال پیش توسط Armin Rahmati مطرح شد
7 پاسخ

نمایش ندادن درست اطلاعات

سلام دوستان.
من میخوام روزهای حضور دکتر رو نمایش بدم ولی به صورت زیر بهم نمایش میده:

[{"id":1,"days":"\u0634\u0646\u0628\u0647","created_at":"2021-04-07T16:46:34.000000Z","updated_at":"2021-04-
07T16:46:34.000000Z","pivot":{"doctor_id":1,"day_id":1}},
{"id":2,"days":"\u06cc\u06a9\u0634\u0646\u0628\u0647","created_at":"2021-04-
07T16:46:44.000000Z","updated_at":"2021-04-07T16:46:44.000000Z","pivot":{"doctor_id":1,"day_id":2}}]
@foreach($doctors as $key => $doctor)
    <tbody>
     <tr>
         <td>{{ $key + 1 }}</td>
         <td>{{ $doctor->user()->get()->first()->firstName }} {{ $doctor->user()->get()->first()->lastName }}</td>
         <td>{{ $doctor->getDegree() }} {{ $doctor->getSpecialty() }}</td>
         <td>{{ $doctor->days }}</td>
     </tr>
     </tbody>
@endforeach

در صوررتی که بقیه مشخصات رو به درستی نمایش میده.


ثبت پرسش جدید
فرشید مرادی
فرشید مرادی
تخصص :noob
@eniack5 سال پیشمطرح شد
-1

سلام
این فرمت json هست شما افزونه json viewer رو نصب کنید روی مرورگرتون برای‌ نمایش بهتر و خواناتر این اطلاعات.


Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
0

@eniack
افزونه json formatter نصب هست ولی من داخل جدولم که میخوام روزها رو نمایش بدم به این صورت بهم نمایش میده.


فرشید مرادی
فرشید مرادی
تخصص :noob
@eniack5 سال پیشمطرح شد
0

چون شما از رابطه pivot استفاده کردید به این صورت نمایش میده.
اسم اون فانکشنی که داخلش رابطه pivot هست رو باید بنویسید و بعد اشاره کنید به مقداری که مد نظر دارید مثلا اسم فانکشن value هست باید به این صورت نوشته بشه

$doctor->pivot->value->id

Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
0

@eniack
مدل Doctor:

public function days() {
    return $this->belongsToMany(Day::class);
}

کنترلر مربوطه:

public function index() {
    $doctors = Doctor::oldest()->paginate();
    return $doctors->load('days');
    return view('Home.doctorProgram', compact('doctors'));
}

ویو مربوطه:

<td>{{ $doctor->pivot->days->id }}</td>

داخل کنترلر اگه return اولی رو بذارم اطلاعاتی که به صورت json برمیگردونه به صورت زیر است:

[
{
"id": 1,
"user_id": 2,
"specialty": "eye",
"degree": "expert",
"image": "0_Original_4cf3f5e9-b584-4ed0-bbea-e6aaa35810d9.jpg",
"created_at": "2021-04-07T16:49:21.000000Z",
"updated_at": "2021-04-07T16:49:21.000000Z",
"days": [
{
"id": 1,
"days": "شنبه",
"created_at": "2021-04-07T16:46:34.000000Z",
"updated_at": "2021-04-07T16:46:34.000000Z",
"pivot": {
"doctor_id": 1,
"day_id": 1
}
},
{
"id": 2,
"days": "یکشنبه",
"created_at": "2021-04-07T16:46:44.000000Z",
"updated_at": "2021-04-07T16:46:44.000000Z",
"pivot": {
"doctor_id": 1,
"day_id": 2
}
}
]
},
{
"id": 2,
"user_id": 3,
"specialty": "heart",
"degree": "specialty",
"image": "0_Original_473449ac-2a08-4c15-8135-7d441d55ec9d.jpg",
"created_at": "2021-04-07T16:49:53.000000Z",
"updated_at": "2021-04-07T16:49:53.000000Z",
"days": [
{
"id": 3,
"days": "دوشنبه",
"created_at": "2021-04-07T16:46:53.000000Z",
"updated_at": "2021-04-07T16:46:53.000000Z",
"pivot": {
"doctor_id": 2,
"day_id": 3
}
},
{
"id": 4,
"days": "سه شنبه",
"created_at": "2021-04-07T16:47:03.000000Z",
"updated_at": "2021-04-07T16:47:03.000000Z",
"pivot": {
"doctor_id": 2,
"day_id": 4
}
}
]
}
]

و اگر return رو نذارم و به صورت زیر بنویسم:

public function index() {
   $doctors = Doctor::oldest()->paginate();
   $doctors->load('days');
   return view('Home.doctorProgram', compact('doctors'));
}

ارور زیر رو دریافت میکنم:

Trying to get property 'days' of non-object

moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

سلام دوست عزیز.
ارور property of non-object که به خوبی مشخصه داره چی می گه شما نمی تونید بعد از paginate از load استفاده کنید.
برای نمایش دادن روز های دکتر امیدوارم کد های زیر بتونه مشکلتون رو حل کنه.

public function index(ِDoctor $doctor) {
    return view('Home.doctorProgram', compact('doctor'));
}

و در view مورد زیر را وارد کنید.

@foreach($doctor as $key => $item)
    <tbody>
     <tr>
         <td>{{ $key + 1 }}</td>
         <td>{{ $item->user()->firstName }} {{ $item->user()->lastName }}</td>
         <td>{{ $item->getDegree() }} {{ $item->getSpecialty() }}</td>
         <td>{{ $item->days }}</td>
     </tr>
     </tbody>
@endforeach

@arminrahmati999


Armin Rahmati
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
0

@mohaligateway
متاسفانه جواب نداد.


moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

سلام دوباره @arminrahmati999
یکی از روش های دیباگ کردن کدها که برنامه نویس ها معمولا به این روش پیش میرن (البته درس پس می دیم خدمت شما 😅) این هستش که خروجی dd می گیرن. شما هم روال زیر رو پیش برید نتیجه می گیرید.

@foreach($doctor as $key => $item)
    @dd($item)
    <tbody>
     <tr>
         <td>{{ $key + 1 }}</td>
         <td>{{ $item->user()->firstName }} {{ $item->user()->lastName }}</td>
         <td>{{ $item->getDegree() }} {{ $item->getSpecialty() }}</td>
         <td>{{ $item->days }}</td>
     </tr>
     </tbody>
@endforeach
@endforeach

اگه خروجی مشکلی نداشت حالا user رو هم اضافه کنید.

@foreach($doctor as $key => $item)
    @dd($item->user)
    <tbody>
     <tr>
         <td>{{ $key + 1 }}</td>
         <td>{{ $item->user()->firstName }} {{ $item->user()->lastName }}</td>
         <td>{{ $item->getDegree() }} {{ $item->getSpecialty() }}</td>
         <td>{{ $item->days }}</td>
     </tr>
     </tbody>
@endforeach

اگه مشکلی نداشت برو مرحله بعد ....


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

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