以下是我的查询
$user = User::select(['uuid','name','about'])->with(['education','work'])->first();
Run Code Online (Sandbox Code Playgroud)
这将返回关系education和的空数据work,但是如果我select从查询中删除函数,我将获取关系中的数据,并且它还返回我不想要的用户表的所有列。
如何解决这个问题
问题是关系 ( with(...)) 执行附加查询以获取相关结果。假设您有一对多的关系,其中users有 many works。User::with('work')->find(1)然后将执行这两个查询:
select user where id = 1和select works where user_id = 1。
因此,基本上为了能够执行第二个查询(获取关系数据),您需要id在 select 语句中包含(或您引用的任何列)。
使固定:
$user = User::select(['uuid','name','about', 'id'])->with(['education','work'])->first();
Run Code Online (Sandbox Code Playgroud)
同样的原则以不同的形式适用于所有关系。例如,在相反的情况下hasMany,belongsTo您需要选择外键(例如user_id)。
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |