Laravel mysql特殊查询

时间:2017-10-24 15:16:37

标签: laravel-5 laravel-eloquent

我有一张名为:roast_coffees的表 在其中我有领域: ID coffee_id 重量 包装

我需要找到最早的记录,其中coffee_id等于X,权重字段减去打包字段大于零。

我这样做:

$result = DB::select( DB::raw("SELECT id, weight, packed FROM roast_coffees WHERE coffee_id = 3 AND weight - packed > 0"));

我有两个问题:

  1. 有更好的方法吗?
  2. 如何只获取符合查询的最新记录?
  3. 谢谢

1 个答案:

答案 0 :(得分:0)

您可以按created_at日期排序,然后将结果限制为1.这将找到最早的记录。

例如

$result = DB::select( DB::raw("SELECT id, weight, packed FROM roast_coffees WHERE coffee_id = 3 AND weight - packed > 0 ORDER BY created_at ASC LIMIT 0, 1"));

至于更好的方法,您已使用laravel-eloquent标记了此问题,但是您使用的是原始数据库查询。您是否设置了模型以便使用雄辩的查询?