Laravel 5.1使用功能选择字段
问题描述:
我可以从与函数“with”的关系中选择值吗? 所以一定是这样的:Laravel 5.1使用功能选择字段
$test = User::where('id',1)->with(['user_detail' => function($query){
$query->select("detail_1");
}])->get();
是的,我知道,我可以把选择的关系“user_detail”,但我可以用功能选择?
答
您可以在with
选择为你所做的例子如下:
$test = User::where('id',1)->with(['user_detail' => function($query){
$query->select("detail_1");
}])->get();
但它不会工作(如您在其他答案中所述),因为您只选择了一个属性,但外键不可用ñ您的选择声明。所以,确保你也选择了相关的外键,然后它就可以工作。
在你的情况,我相信,你也选择在您选择的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
,正如你在其他评论中提到的那样。
答
是的,您可以在with()
内使用select()
。只是通过列的一个阵列:
$query->select(['detail_1', 'detail_2']);
或者,你可以创建另一个关系,并添加select()
它:
public function userDatails()
{
return $this->hasMany('App\UserDetail')->select(['detail_1', 'detail_2']);
}
+0
对于第二种解决方案好,但对于第一种解决方案。 不能正常工作。它在模型中的字段“user_detail”上返回null。 – LorenzoBerti
哇..谢谢!我错过了外键。 – LorenzoBerti
不客气:-) –