Как заставить отношения laravel Many-To-One (hasMany) работать - PullRequest
0 голосов
/ 23 сентября 2018

Я связал 2 модели - Категория и Новости, каждая новая может иметь 1 категорию, назначенную для себя.Проблема в том, что я не могу получить доступ к категории, которую я назначил новой, мой вопрос, как заставить это работать?И почему мой путь не работает.

Категория модели-

public function news(){
    return $this->hasMany('App\News');
}

Модель новостей -

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

Категория Controller - $categories = DB::table('categroys')->get(); dd($categories->news);

сообщение -

"Property [news] does not exist on this collection instance."

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Это Красноречивые отношения .Это отношение работает только с моделью.

$categories = Categroy::all();

foreach($categories as $category) {
    // $category->news
}
0 голосов
/ 23 сентября 2018

Вы можете нетерпеливо загружаться ваш news метод следующим образом:

$categories = Category::with(['news'])->get();
dd($caregories);
0 голосов
/ 23 сентября 2018
  1. Эта строка возвращает экземпляр Collection.Это не сама модель.Это все предметы в категории таблицы.$categories = DB::table('categroys')->get();

    foreach($categories as $category) {
       $news = $category->news();
    }
    
  2. Но в этом случае вы получите первый предмет, а это модель

        $categories = DB::table('categroys')->first();
    

Итак, выследует использовать либо foreach , либо взять только первый элемент коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...