Laravel雄辩的外键关系

时间:2016-11-21 21:47:28

标签: php laravel eloquent

我对Laravel Eloquent有疑问。我创建了几个表格和模型,就像这样:

旅行

  • ID
  • 名称
  • 用户

用户

  • ID
  • 电子邮件

消息

  • ID
  • 含量
  • 跳闸
  • 用户

如何为所有外键的单个用户获取所有消息?你知道,这个表中的所有数据。像这样:

[
    1 => [
        'content',
        'trip' => [
            'name'
        ],
        'user' => [
            'email'
        ]
    ]
]

有可能轻松获取所有数据吗?

我的模特:

// Message.php:

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

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

// Trip.php:

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

// User.php:

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

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

我的代码

dd(
    User::with([
        'sent',
        'recipient'
    ])->find(2)->toArray()
);

我想得到的是什么:

screen

2 个答案:

答案 0 :(得分:1)

我相信您正在寻找加载方法。

假设你有一个用户

$user->load('messages'); // var_dump($user);

如果你vardump你的用户对象,你会看到相关的消息被加载。

答案 1 :(得分:0)

使用急切加载来实现这一目标 试试这个:

$users = User::with([
        'messages.trip',
    ])->get();

dd($users);

参考:https://laravel.com/docs/5.3/eloquent-relationships#eager-loading