راکت

خطای مریوط به نمایش در لاراول

3 پاسخ

در اجرای لاراول با خطا مواجه شدم :من یک منو قرار دادم که یکی از گزینه های آن اسامی کارمندان میباشد و اسامی با توجه یه سمتی که داره از طریق آیدی از دیتابیس کشیدم بیرون بعد میخواهم روی هر اسم که زدم منو به صفحه ای ببره و مابقی اطلاعات اون فرد را از جمله عکس وکد ملی و... نمایش دهد
nav:
<li class="dropdown mega-dropdown">
<a href="#" class="dropdown-item dropdown-toggle" data-toggle="dropdown"
id="re">تاسیسات</a>
<ul class="dropdown-menu mega-dropdown-menu" aria-labelledby="re"
role="menu">
@foreach($ta as $t)
<li><a href="/show_aza/{{$t->id}}"
class="dropdown-item">{{$t->name}}
  {{$t->famil}}</a></li>
@endforeach
</ul>

              </li>

کد web:
Route::get('/show_aza/{id}','AzaController@show');
کد کنترلرم:
public function show($id)
{
$aza = Aza::find($id);
$rs = Aza::where('semat', 'رئیس هیات مدیره')->get();
$nyb = Aza::where('semat', 'نایب رئیس هیات مدیره')->get();
$dbr = Aza::where('semat', 'دبیر و عضو اصلی هیات مدیره')->get();
$mdr_aml = Aza::where('semat', 'مدیر عامل')->get();
$ozv = Aza::where('semat', 'عضو اصلی')->get();
$bzr = Aza::where('semat', 'بازرس')->get();
$mv_ed = Aza::where('semat', 'معاون اداری و مالی')->get();
$mv_ej = Aza::where('semat', 'معاون اجرائی')->get();
$mv_am = Aza::where('semat', 'معاون املاک و امور ثبتی')->get();
$mdr_da = Aza::where('semat', 'مدیر داخلی')->get();
$ed = Aza::where('semat', 'امور اداری')->get();
$hr = Aza::where('semat', 'حراست')->get();
$ta = Aza::where('semat', 'تاسیسات')->get();
$ab = Aza::where('semat', 'آبیار')->get();
return view('show_aza_pg', compact('aza', 'rs', 'nyb', 'dbr', 'mdr_aml', 'ozv', 'bzr', 'mv_ed', 'mv_ej', 'mv_am', 'mdr_da', 'ed', 'hr', 'ta', 'ab'));
}
کد صفحه نمایش:

@foreach($aza as $az)
<div class="col-md-6 mb-5 mt-5">
<div class="card">
<div class="card-header text-center">
<img src="pro/{{$az->image}}" alt="" class="img-fluid "
style="width: 187px; height: 233px"><br>
<h5 class="text-center mt-4"> سمت: {{$az->semat}}</h5>

  </div>

<div class="card-body text-right">
...... <span class="float-right">نام: {{$az->name}}</span>
...
<div/>....
@endforeach

کد eror:
Trying to get property 'image' of non-object

rose
rose
@rose
ثبت پرسش جدید

پاسخ‌ها

3
Mostafa Nazar
Mostafa Nazar
@mostafa.8722

تخصص: برنامه نویس وب و موبایل

سلام
مشکل از خط زیر هستش

$az->image

$az رو null بر میگردونه

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

همونطور که دوستمون اشاره کرد.. مشکل از پراپتی image هست

شما سعی دارید پراپرتی image رو بگیرید اما چون وجود نداره به خطا میخوری
در PHP ۷.۴ به بالا میتونی به شکل زیر ازش استفاده کنی

$az->image ?? ''

یک نکته جانبی:
شما داری برای گرفتن تمام سِمت ها در سیستم، حدود ۱۳، ۱۴ تا کوئری اجرا میکنی.. که اصلا بهینه نیست
میتونی در عوض همه رو با یک کوئری بگیری و با متد groupBy در کالکشن ها همه رو دسته بندیشون کنی

Aza::get()->groupBy('semat')

بعدا اگر تعداد اعضا هم زیاد شد، میتونی از groupBy روی خود کوئری هم استفاده کنی

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

rose
rose
@rose

تخصص: طراح وب

متشکر بابت وقتی که گذاشتین من مشکلم این بود که یک مرتبه از دیتابیس اطلاعات را بیرون اورده بودم و اسم طرفو به نمایش گذاشته بودم و میخواستم روی اسم بزنه و مابقی اطلاعات را نمایش دهد چون اون اسم یک نفره دیگه نیاز به حلقه foreach نداشتم eror به خاطر این بود در صفحه نمایش باید اینطور کد میزدم
<div class="card-header text-center">
<img src="pro/{{$aza->image}}" alt="" class="img-fluid "
style="width: 187px; height: 233px"><br>
<h5 class="text-center mt-4"> سمت: {{$aza->semat}}</h5>
</div>
<div class="card-body text-right">
<span class="float-right">نام: {{$aza->name}}</span>
<span class="float-left">نام خانوادگی: {{$aza->famil}}</span><br>....
یعنی خود aza مستقیما اشاره میکرد

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

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