我是laravel的新手,有两个表一个邮局表和一个类别表。我只有一个与一个帖子相关的类别,所以我在帖子表中添加了类别ID。现在我想显示所有带有类别名称的帖子。
发布表格 ID,名称CATEGORY_ID,状态
类别表: ID,名称
我想表达喜欢 POST NAME 类别名称
我有两个模型类别和帖子,所以我怎么能写出雄辩的关系或者给我一个简单的方法来获得带有类别名称的帖子数组
答案 0 :(得分:4)
在你的帖子模型中:
public function category() {
return $this->belongsTo(Category::class);
}
现在可以直接从Post模型中使用
$post = Post::find($id);
$category_name = $post->category->name;
在评论中修改问题:
您可以通过多种方式按类别名称获取帖子,为方便起见我会这样做:
在类别模型中:
public function posts() {
return $this->hasMany(Post::class);
}
现在您可以通过类别模型获得它:
$category = Category::where('name', $name)->first();
$posts_collection = $category->posts()->get();
答案 1 :(得分:4)
在Post模型上,您可以像这样编写类别关系:
public function category() {
return $this->belongsTo(Category::class); // don't forget to add your full namespace
}
然后你可以做这样的事情......
$posts = Post::with('category')->get();
将获取您所属类别的所有帖子。
然后,您可以迭代$posts
变量,例如,使用刀片...
@foreach ($posts as $post)
<tr>
<td>{{ $post->name }}</td>
<td>{{ $post->category->name }}</td>
</tr>
@endforeach
在此处进一步阅读:https://laravel.com/docs/5.4/eloquent-relationships#defining-relationships