我可以从功能关系中选择值"使用" ? 所以做这样的事情:
$test = User::where('id',1)->with(['user_detail' => function($query){
$query->select("detail_1");
}])->get();
是的我知道我可以选择关系" user_detail"但我可以选择功能吗?
答案 0 :(得分:2)
您可以在with
范围内选择以下示例:
$test = User::where('id',1)->with(['user_detail' => function($query){
$query->select("detail_1");
}])->get();
但它无法正常工作(正如您在其他答案中所评论的那样),因为您只选择了一个属性,但外键在您的select语句中不可用。因此,请确保您也选择相关的外键,然后它就能正常工作。
在您的情况下,我相信您也可以在您的选择中选择user_id
,例如:
$test = User::where('id',1)->with(['user_detail' => function($query){
$query->select(
'user_id', // This is required if this key is the foreign key
'detail_1'
);
}])->get();
因此,如果没有建立关系的foreign key
,Eloquent
就无法加载相关模型,这就是为什么你得到null
的原因你在其他评论中提到的结果。
答案 1 :(得分:0)
是的,您可以在select()
内使用with()
。只需传递一列列:
$query->select(['detail_1', 'detail_2']);
或者,您可以创建另一个关系并向其添加select()
:
public function userDatails()
{
return $this->hasMany('App\UserDetail')->select(['detail_1', 'detail_2']);
}
答案 2 :(得分:0)
$result = Staff::where('live_status',2)
->with('position')->with('department')->with('gender')
->with(['partner' => function($query){
$query->where('alive',0);
}]);