首页 > 解决方案 > 在laravel中选择表和关系的特定列

问题描述

让我们考虑一下我有一个模型User和另一个模型Employee

现在我只想提取 Employee 模型的一些字段,例如薪水、id、emp_id以及 User 模型的一些列,例如name、id

$employee = Employee::with('user:id,name')
             ->where('department', $request->department)
             ->get(['id', 'emp_id', 'salary']);

当我执行此操作时,它将返回id,emp_id,salary数据,但对于user:name,id它将返回null

我怎样才能在 get() 中指定 user:id,name

标签: sqllaravel-5eloquent

解决方案


您可以加载完整模型或仅加载其中的某些字段。要仅加载某些字段,请使用select(). 它也适用于关系急切加载查询:

$employees = Employee::with(['user' => function ($query) {
        $query->select(['id', 'employee_id', 'name']);
    }])
    ->where('department', $request->department)
    ->select(['id', 'emp_id', 'salary'])
    ->get();

推荐阅读