具有自定义关系的Laravel / Eloquent模型

时间:2018-04-24 08:08:41

标签: php laravel eloquent

想象:

我有一个带有价格列的广告表。 我有一个price_from和price_to列的价格范围表。

我想设置我的Eloquent模型,以便我可以从Pricerange实例中获取匹配的广告。或者查询价格范围表,并对所有匹配的广告进行计数。 (可选)从广告关系中获取查询并添加更多条件。

换句话说,我想要相当于这个原始查询:

SELECT priceranges.*, (
  SELECT COUNT(adverts.id) FROM adverts
  WHERE adverts.price >= priceranges.price_from 
  AND adverts.price < priceranges.price_to 
) AS adverts_count
FROM priceranges

SELECT priceranges.*, COUNT(adverts.id) AS adverts_count
FROM priceranges
INNER JOIN adverts ON adverts.price >= priceranges.price_from 
AND adverts.price < priceranges.price_to 
GROUP BY priceranges.id

这可能吗?我搜索了自定义关系,但我找不到可行的解决方案。

提前致谢!

1 个答案:

答案 0 :(得分:0)

你可以这样做,

Priceranges::join('adverts',function($join){
  $join->on('adverts.price','>=','priceranges.price_from')->orOn('adverts.price','<','priceranges.price_to');
})
->groupBy('priceranges.id')
->get();