繁体   English   中英

如何使Laravel多对一(hasMany)关系有效

[英]How to make laravel Many-To-One (hasMany) relationship works

我关联了2个模型-类别和新闻,每个新模型可以为其分配1个类别。 问题是我无法访问分配给新类别的类别,我的问题是如何使其工作? 以及为什么我的方法行不通。

分类模型-

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

新闻模型-

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

CategoryController- $categories = DB::table('categroys')->get(); dd($categories->news); $categories = DB::table('categroys')->get(); dd($categories->news);

信息 -

"Property [news] does not exist on this collection instance."
  1. 该行将返回Collection的实例。 它本身不是模型。 这是类别表中的所有项目。 $categories = DB::table('categroys')->get();

     foreach($categories as $category) { $news = $category->news(); } 
  2. 但在这种情况下,您将获得第一个项目,它是一个模型

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

因此,您应该使用foreach或仅获取集合的第一项。

这是雄辩的关系 此关系仅适用于模型。

$categories = Categroy::all();

foreach($categories as $category) {
    // $category->news
}

您可以按以下方式加载 news方法:

$categories = Category::with(['news'])->get();
dd($caregories);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM