我正在创建一个网站来比较不同商店的产品价格。我已经用这两个表建立了一个数据库。
+---------+ +------------+
| Product | | Price |
+---------+ +------------+
| id | | id |
| name | | product_id |
+---------+ | price |
| date |
+------------+
现在我希望能够获得最后price.date
早于特定日期的所有产品。
我尝试使用以下代码,但没有成功。
Product::with(['prices' => function($q){
$q->first()->where('date', '<', Carbon::yesterday());
}])->get()->prices();
有人可以帮我解决这个问题吗?
提前致谢:)
答案 0 :(得分:1)
With()
仅用于急切加载记录。
您需要使用whereHas
:
Product::whereHas('price',function($q) {
return $q->where('date', '<', Carbon::yesterday());
})->whereHas('price',function($q) {
return $q->where('date','>=',Carbon::yesterday());
},'=',0)->get();
这将返回where
为has
而不是date
的所有less
Carbon::yesterday()
个{{1}}价格的产品