将 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怎么打印出执行sql语句

使用 Laravel 关系 orm 时 UUID 二进制(16)的问题

Laravel Eloquent ORM - 选择所有两个关系都不存在的模型时,生成的 SQL 和查询构建器结果不匹配

将 lambda 表达式转换为 ORM 中的 SQL?

django -2 ORM模型

laravel框架之ORM模型