假设我有一张桌子和一张桌子。名为UserActivity
的模型。
每行都有以下字段:id
,user_id
。
当我使用user
关系查询UserActivity时,我会收到所有user
信息:他的ID,电子邮件以及其他一些我不需要的字段。我所需要的只是用户名字段。
如何从关系中仅获取3-4个特定字段,假设我当前的查询获取所有字段:
return UserActivity::with('user')
->orderBy('created_at','desc')
->take(5)->get();
关系是 BelongsTo 。
答案 0 :(得分:0)
此查询仅从关系中返回列'col1','col2'等。
return UserActivity::with(['user' => function($q) {
$q->select('id','col1', 'col2', ...);
}])
->orderBy('created_at','desc')
->take(5)->get();
如果要确保这些列是所有查询中加载的唯一列,其中用户对象是从UserActivity加载的,则可以修改关系,
function user()
{
return $this->belongsTo(...)->select(['col1, 'col2', ...]);
}
答案 1 :(得分:0)
return UserActivity::with(['user' => function ($query) {$query->select('name', 'email')}])
->orderBy('created_at','desc')
->take(5)->get();