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


ثبت پرسش جدید
Mostafa Nazar
تخصص : برنامه نویس وب و موبایل
@mostafa.8722 3 سال پیش مطرح شد
0

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

$az->image

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

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

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

$az->image ?? ''

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

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

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


rose
تخصص : طراح وب
@rose 3 سال پیش مطرح شد
0

متشکر بابت وقتی که گذاشتین من مشکلم این بود که یک مرتبه از دیتابیس اطلاعات را بیرون اورده بودم و اسم طرفو به نمایش گذاشته بودم و میخواستم روی اسم بزنه و مابقی اطلاعات را نمایش دهد چون اون اسم یک نفره دیگه نیاز به حلقه 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 مستقیما اشاره میکرد


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

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