按第一个外键过滤

时间:2014-12-09 10:10:29

标签: laravel laravel-4 foreign-keys eloquent

我正在创建一个网站来比较不同商店的产品价格。我已经用这两个表建立了一个数据库。

+---------+     +------------+
| Product |     | Price      |
+---------+     +------------+
| id      |     | id         |
| name    |     | product_id |
+---------+     | price      |
                | date       |
                +------------+

现在我希望能够获得最后price.date早于特定日期的所有产品。

我尝试使用以下代码,但没有成功。

Product::with(['prices' => function($q){
    $q->first()->where('date', '<', Carbon::yesterday());
}])->get()->prices();

有人可以帮我解决这个问题吗?

提前致谢:)

1 个答案:

答案 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();

这将返回wherehas而不是date的所有less Carbon::yesterday()个{{1}}价格的产品

Official Documentation