我想知道是否有多个闭包加载两个hasOne关系的解决方案。有一个关系(personaldata)我只需要一些列,第二个关系(userfile)有一个where子句。 如果我从个人数据中删除select或从userfile中删除where子句,它可以工作,否则有两个闭包会使其中一个具有空值。
$user = Users::with(['personaldata' => function($a) {
$a->select('first_name', 'title_name', 'last_name', 'street_address', 'city', 'state', 'country_code', 'zip_code', 'telephone_data', 'skype', 'per_street_address', 'per_city', 'per_state', 'per_country_code', 'per_zip_code');
},
'userfile' => function($b) {
$b->where('type', '1');
}
])
->where('user_id', Auth::id())
->get();
答案 0 :(得分:1)
像这样更改你的代码:
$user = Users::with(['personaldata' => function($query) {
$query->select('first_name', 'title_name', 'last_name', 'street_address', 'city', 'state', 'country_code', 'zip_code', 'telephone_data', 'skype', 'per_street_address', 'per_city', 'per_state', 'per_country_code', 'per_zip_code');
}])
->with(['userfile' => function($query) {
$query->where('type', '1');
}])
->where('user_id', Auth::id())
->get();