Laravel雄辩地获得父母,子女记录和子女记录

时间:2018-09-18 00:11:55

标签: mysql laravel eloquent

我有这些模型,这些模型的括号中包含以下字段。 用户可以有很多帖子,而帖子可以有很多类别。我们怎么能 用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();

将返回用户,每个用户都有一个帖子记录。但是如何在结果集中添加类别?

2 个答案:

答案 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对象,就会自动将这些类别与帖子一起拉入。