我尝试从表中检索一些数据,但我只需要一个项目。
表: 预订,reservation_products,products_price_history。
表结构太复杂,所以我们只使用我们需要的东西:
保留:
| id | date |
-------------------
| 1 | 2017-10-03 |
reservation_products
| id | reservation_id |
-----------------------
| 1 | 1 |
products_price_history
| id | product_id | start_date | end_date | price |
-----------------------------------------------------
| 1 | 1 | 2017-09-20 | 2017-10-01 | 200 |
| 2 | 1 | 2017-10-01 | NULL | 200 |
预订有很多产品,产品价格很高。我需要承担它的start_date低于预约日期的价格。
逻辑:
$users = User::with(['reservations' => function($query) {
// reservation products
$query->with(['reservation_products' => function($query) {
$query->join('reservations', 'reservation_products.reservation_id', 'reservations.id');
$query->join('products', 'reservation_products.product_id', 'products.id');
$query->join('products_price_history', function($query) {
$query->on('reservations.salon_id', 'products_price_history.salon_id');
$query->on('reservation_products.product_id', 'products_price_history.product_id');
$query->on('reservation_products.product_type_id', 'products_price_history.product_type_id');
$query->whereRaw('reservations.date >= products_price_history.date_start');
$query->limit(1);
});
}]);
}])->get();
$query->limit(1);
无效。查询只是给了我所有低于预订日期的条目。
感谢。