在 with 查询中只查询个别字段
最近在项目开发中,调用 with
方法预加载数据,默认会把所有字段都查询出来,但是我只想查询个别字段。
百度了一下,网上列举了很多方法。试了一下,发现一个问题,如果我 select
的时候没有 id
的话就会为 null
public function brand()
{
return $this->belongsTo(Brand::class, 'brandId')->select('briefCode');
}
如果 select
的时候有 id
的话就没有问题
public function brand()
{
return $this->belongsTo(Brand::class, 'brandId')->select('id', 'briefCode');
}
网上都没有说一定要传 id
,:joy: :joy: :joy:
另外又发现一个问题:
在为预加载添加约束条件的时候,如果在闭包中指定 select 字段,最后关联也会为 null
。
$parts = ShippingOrderPart::where('id', 602)
->with(['shippingOrder' => function ($query) {
$query->select('id', 'carrier');
}])
->get();
执行的 sql 语句如下:
select * from `shipping_order_parts` where `id` = 602
select `id`, `carrier` from `shipping_order` where `shipping_order`.`id` in ('1544')
当我不指定 select 字段,结果正常。
执行的 sql 语句如下:
select * from `shipping_order_parts` where `id` = '602'
select * from `shipping_order` where `shipping_order`.`id` in ('1544')
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: