bardia
5 سال پیش توسط bardia مطرح شد
27 پاسخ

ارتباظ یک به یک در لاروال

من یه دو تا جدل دارم یکی page و یکی دیکه هم menu

داخل مدل menu متد رو به صورت زیر تعریف کردم:

    public function page(){
        return $this->belongsTo('App\Page');
    }

داخل مدل page متد رو به صورت زیر تعریف کردم:

    public function menu(){
        return $this->hasOne('App\Menu');
    }

اینم داخل view:

 <td>{{$menu->page->title}}</td>

اینم خطای که میده:

Trying to get property of non-object 

مشگل کجاست


ثبت پرسش جدید
مهدی
@code2code 5 سال پیش آپدیت شد
1

'AppMenu' یا بنویس 'App\Menu' یا App/Menu::class
'AppPage' یا بنویس 'App\Page' یا App/Menu::class


bardia
تخصص : Golang/Laravel
@mrbardia72 5 سال پیش مطرح شد
1

@code2code
اها اون من اینجا توی این تاپبک اشتباه نوشتی


مهدی
@code2code 5 سال پیش آپدیت شد
1

خوب یه کاری کن چک کن اولا ببین واسه منویی که درخواست میکنی واسش پیج وجود داره یا نه
اصلا دستی تو mysql چک کن ...
در ضمن یه توصیه دارم بهت هیچ وقت خودتو درگیر روابط نکن توی کارای بزرگ همیشه من به این رسیدم که هیچی کوئری نمیشه و خیلی وقتا روابط جوابگوی کارم نبوده و پیچیده ترش میکرده


bardia
تخصص : Golang/Laravel
@mrbardia72 5 سال پیش مطرح شد
1

@code2code
مشکل حل شد مهندس
ممنون
منظورت از این چیه که گفتید که روابط جوابگوی کارها نبود و پیچیده ترش می کیرد


مهدی
@code2code 5 سال پیش مطرح شد
1

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


bardia
تخصص : Golang/Laravel
@mrbardia72 5 سال پیش مطرح شد
1

@code2code
برام جا سواله که مثل بجای استفاده از روابط به چه نحوه کد زدید


مهدی
@code2code 5 سال پیش آپدیت شد
1

توی مثال زیر ما نیاز داریم سه تا جدول رو جوین کنیم
توی mysql اینا جوین میشه و سه تا جدول با یه کوئری از سمت mysql ارسال میشه
ولی با eloquent باید with زد و از callback function استفاده کرد که به جای یک کوئری دو کوئری ارسال میشه که مسلما کندتره...
ولی ایجوری خیلی قشنگ تر انجام شد
من شرمنده ام که دیگه وقتم اجازه نمیده بیشتر وقت بذارم

            $primary_query = DB::connection('telegram')
                ->table('groups AS g')
                ->leftJoin('group_members AS g_m', 'g.group_id', '=', 'g_m.group_id')
                ->leftJoin('users AS u', 'u.id', '=', 'g_m.user_id')
                ->where('g.group_id', '=', $group_id);

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

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