json
1 سال پیش توسط json مطرح شد
6 پاسخ

مشکل روابط لاراول

سلام
یه روابط یک به چند داریم:بعد وقتی که کوئری میزنم و دیتا رو میگیرم،بدون هیچ مشکلی دیتا میاد و به روابط هم توی Blade دسترسی دارم.
اما وقتی که این خط کد زیر رو اضافه میکنم روابط رو null برمیگردونه و بهشون دسترسی ندارم و انگار روابط خالی هستن
بنظرتون مشکل از کجاست مننون…
توجه کنید این مشکل دقیقا وقتی پیش میاد که فقط این فیلدهای خاص رو درخواست میکنم
روابط هم به درستی توی مدل ها نوشتم
از with هم استفاده کردم اما بازم نشد و وقتی dd میگیرم null هستش
@endworld
@hekmati
@wozniak
@AlirezaQolamian
@aydin01
@AlirezaQolamian

select(‘id’,’title’)

ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 1 سال پیش مطرح شد
0

مقداری که به متد select پاس میدید باید آرایه باشه:

->select(['id', 'title'])

json
تخصص : آزاد
@JSON 1 سال پیش آپدیت شد
0

@mhyeganeh
متاسفانه بازم مشکل حل نشد
ببینید کد به این شکله و نتجیه روابط null هستش
به هر شکلی که میشد امتحان کردم اما فقط وقتی این مشکل پیش میاد که خط سوم رو اضافه میکنم و وقتی که این خط رو پاک میکنم مشکل حل میشه...و خب نمیشه پاکش کرد چون فیلدها زیادن و من فق به این چند تا نیاز دارم...مگر اینکه روش دیگه ای باشه برای گرفتن تعداد محدودی از فیلدها...

$last_ads=Ad::orderBy('id','desc')
        ->with(['brand','city','province']) 
        ->select(['id','title','created_at','price'])
        ->take(8)
        ->get();

developer
تخصص : برنامه نویس
@developer 1 سال پیش مطرح شد
-1

با paginate محدود کنید


json
تخصص : آزاد
@JSON 1 سال پیش مطرح شد
0

@developer دوست عزیز من میخوام فیلدها رو محدود کنم نه تعداد سطرها رو


Daniyal Amiri
@daniyalx77 1 سال پیش آپدیت شد
-1

سلام در select باید فیلد هایی که با جدول رابطه دارن رو هم بزاری


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 1 سال پیش آپدیت شد
0

@JSON

وقتی با استفاده از متد with از قابلیت EagerLoading استفاده می‌کنید لازمه که موقع انتخاب فیلدهای مورد نیازتون یکم دقیق تر عمل کنید و حتما اسم جدول رو هم قبلش اضافه کنید تا لاراول متوجه بشه این فیلد رو از کدوم Model باید فراخونی کنه. در مثال شما با این پیش فرض که اسم جدولتون ads هست میشه اینجوری:

$last_ads=Ad::orderBy('id','desc')
        ->with(['brand','city','province']) 
        ->select(['ads.id', 'ads.title', 'ads.created_at', 'ads.price'])
        ->take(8)
        ->get();

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

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