Laravel获得特定的关系数据

时间:2016-06-25 09:19:03

标签: laravel

假设我有一张桌子和一张桌子。名为UserActivity的模型。

每行都有以下字段:iduser_id

当我使用user关系查询UserActivity时,我会收到所有user信息:他的ID,电子邮件以及其他一些我不需要的字段。我所需要的只是用户名字段。

如何从关系中仅获取3-4个特定字段,假设我当前的查询获取所有字段:

return UserActivity::with('user')
        ->orderBy('created_at','desc')
        ->take(5)->get();

关系是 BelongsTo

2 个答案:

答案 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();