将 SQL 转换为 Laravel ORM 关系
Posted
技术标签:
【中文标题】将 SQL 转换为 Laravel ORM 关系【英文标题】:Convert SQL to Laravel ORM RELATONS 【发布时间】:2021-06-15 09:27:53 【问题描述】:它正在工作,但我应该使用 Relaion
SELECT * FROM product JOIN ware_houses ON product.id=ware_houses.product_id WHERE ware_houses.variant_id=1;
像这样……
Product::whereHas('ware_houses')->where('ware_houses.product_id',1)->get();
但它不起作用,因为whereHas
返回一个集合,我能做什么???请指教。
【问题讨论】:
在 'get()' 方法之前添加“->first()” 你只需要其中一个,而不是两个。 它不只是一个,它会是动态的,我只是举个例子。 【参考方案1】:你需要使用whereHas()
来实际过滤:
Product::whereHas('ware_houses', function($q)
$q->where('ware_houses.product_id',1);
)->get();
【讨论】:
【参考方案2】:谢谢你!!!
$products=Product::whereHas('wareHouse',function(Builder $query) use ($id)
$query->where('ware_houses.variant_id',$id);
)->get();
【讨论】:
以上是关于将 SQL 转换为 Laravel ORM 关系的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel 关系 orm 时 UUID 二进制(16)的问题