我对Laravel Eloquent有疑问。我创建了几个表格和模型,就像这样:
旅行
用户
消息
如何为所有外键的单个用户获取所有消息?你知道,这个表中的所有数据。像这样:
[
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()
);
我想得到的是什么:
答案 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