Laravel / Lumen限制1加入关闭

时间:2017-11-03 07:32:13

标签: php mysql laravel lumen laravel-eloquent

我尝试从表中检索一些数据,但我只需要一个项目。

表: 预订,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);无效。查询只是给了我所有低于预订日期的条目。

感谢。

0 个答案:

没有答案