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

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


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

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


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

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

$doctor->pivot->value->id

Armin Rahmati
@arminrahmati999 3 سال پیش مطرح شد
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
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش آپدیت شد
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
@arminrahmati999 3 سال پیش مطرح شد
0

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


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
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

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


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

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