در اجرای لاراول با خطا مواجه شدم :من یک منو قرار دادم که یکی از گزینه های آن اسامی کارمندان میباشد و اسامی با توجه یه سمتی که داره از طریق آیدی از دیتابیس کشیدم بیرون بعد میخواهم روی هر اسم که زدم منو به صفحه ای ببره و مابقی اطلاعات اون فرد را از جمله عکس وکد ملی و... نمایش دهد
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
همونطور که دوستمون اشاره کرد.. مشکل از پراپتی image هست
شما سعی دارید پراپرتی image رو بگیرید اما چون وجود نداره به خطا میخوری
در PHP ۷.۴ به بالا میتونی به شکل زیر ازش استفاده کنی
$az->image ?? ''
یک نکته جانبی:
شما داری برای گرفتن تمام سِمت ها در سیستم، حدود ۱۳، ۱۴ تا کوئری اجرا میکنی.. که اصلا بهینه نیست
میتونی در عوض همه رو با یک کوئری بگیری و با متد groupBy در کالکشن ها همه رو دسته بندیشون کنی
Aza::get()->groupBy('semat')
بعدا اگر تعداد اعضا هم زیاد شد، میتونی از groupBy روی خود کوئری هم استفاده کنی
متشکر بابت وقتی که گذاشتین من مشکلم این بود که یک مرتبه از دیتابیس اطلاعات را بیرون اورده بودم و اسم طرفو به نمایش گذاشته بودم و میخواستم روی اسم بزنه و مابقی اطلاعات را نمایش دهد چون اون اسم یک نفره دیگه نیاز به حلقه 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 مستقیما اشاره میکرد
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟