Laravel 5.1 用函数选择字段

Lor*_*rti 2 php laravel eloquent laravel-5

我可以从与函数“with”的关系中选择值吗?所以做这样的事情:

$test = User::where('id',1)->with(['user_detail' => function($query){
            $query->select("detail_1");
        }])->get();
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以将 select 与“user_detail”相关联,但是我可以使用函数进行选择吗?

The*_*pha 5

您可以在with下面给出的示例中选择:

$test = User::where('id',1)->with(['user_detail' => function($query){
    $query->select("detail_1");
}])->get();
Run Code Online (Sandbox Code Playgroud)

但它不会起作用(正如您在其他答案中评论的那样),因为您只选择了一个属性,但外键在您的选择语句中不可用。因此,请确保您还选择了相关的外键,然后它就会起作用。

在您的情况下,我相信您还必须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();
Run Code Online (Sandbox Code Playgroud)

因此,如果没有foreign key建立关系,Eloquent将无法加载相关模型,这就是您null在其他评论中提到的结果的原因。