1

我有一个关系查询。

$dbQuery = $this->someModel
    ->where('user_id', '<>', Auth::id())
    ->with(['questions'])
    ->get(['title', 'status', 'expired_at']);

方法中的字段get()列表定义了顶级所选数据的所选字段列表。但我还需要为questions关系添加一个投影。我怎样才能只选择questions._idquestions.description

我试图将它添加到get()列表中,但它不能以这种方式工作。

4

2 回答 2

3

您可以使用闭包with来仅选择某些列:

Model1::with(['model2' => function($query){
    $query->select('column1','column2');
}])->get();
于 2019-04-09T08:48:44.963 回答
0

我根据@namelivia 的回答找到了适合我的解决方案。它现在适用于我select,但适用于project.

Model1::with(['model2' => function($query){
    $query->project([
        'column1' => 1,
        'column2' => 1,
        'foreign_key' => 1 /* can not be excluded. */         
    ]);
}])->get();
于 2019-04-09T09:32:04.017 回答