我有这些模型,这些模型的括号中包含以下字段。 用户可以有很多帖子,而帖子可以有很多类别。我们怎么能 用laravel雄辩地获得这些。
User [id, name]
Post [id, user_id, post_title]
PostType [id,post_id, category_desc]
在用户模型中
public function posts(){
return $this->hasmany('App\Post');
}
在邮寄模型中
public function categories(){
return $this->hasmany('App\PostType');
}
在控制器中
$result = User::with('post')->get();
将返回用户,每个用户都有一个帖子记录。但是如何在结果集中添加类别?
答案 0 :(得分:2)
您可以使用点符号包括远距离关系:
$result = User::with(['post', 'post.categories'])->get();
答案 1 :(得分:0)
另一种解决方案,尤其是如果您希望在每次抓住用户时都带上帖子和帖子类别时,可以使用“用户和帖子”模型上的$ appends数组自动为每个查询提取这些关系。例如,您的Post模型将在顶部包括以下内容:
class Post extends Model
{
$appends = array('categories');
...
您的用户模型如下所示:
class User extends Authenticatable
{
$appends = array('posts');
...
只要您拉入User对象,就会自动将这些类别与帖子一起拉入。