sql - 在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?
解决方案
您可以加载完整模型或仅加载其中的某些字段。要仅加载某些字段,请使用select()
. 它也适用于关系急切加载查询:
$employees = Employee::with(['user' => function ($query) {
$query->select(['id', 'employee_id', 'name']);
}])
->where('department', $request->department)
->select(['id', 'emp_id', 'salary'])
->get();
推荐阅读
- xamarin.forms - 我不能指定 customView 的高度?
- vue.js - 在 vue-cli3 中使用 webpack 从每个页面中分离全局基本样式
- html - 如何从 http://www.websitename.com/index.html 重定向到 http://www.websitename.com/
- utf-8 - 如何在 tclhttpd 中正确计算 Content-length?
- javascript - 用户配置文件不会显示且无法更新:Firebase 和 VueJS
- excel - Excel LOOKUP 匹配错误的单元格
- mysql - 使用 CakePHP 时是否建议向 MySQL 表添加额外的索引
- windows - 为什么我不能使用 cd 在 cmd 中导航到 sd 卡
- java - Feign 单元测试未找到响应
- php - 使用 switch 后无法使用分页。- 拉拉维尔