如何将这个Raw查询转换成Laravel Eloquent方式?

时间:2017-05-22 08:46:23

标签: laravel eloquent

这是我的原始查询。

  

DB :: raw(" SELECT * FROM tble WHERE status = 1和now()BETWEEN   start_time和end_time ORDER BY id DESC LIMIT 1")

如何将其转换为Laravel Eloquent?

3 个答案:

答案 0 :(得分:2)

为表app/Table.php

创建模型
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Table extends Model
{
    protected $table = 'tble';
}

逻辑

$now = \Carbon\Carbon::now();

$result = \App\Table::where('status', 1)
    ->where('start_time', '<=', $now)
    ->where('end_time', '>=', $now)
    ->orderBy('id')
    ->first();

答案 1 :(得分:1)

DB::table('tble')::where('status',1)
                 ->where('start_time', '<=', Carbon::now())
                 ->where('end_time', '>=', Carbon::now())
                 ->orderBy('id')
                 ->first();

您可以使用简单的日期处理包Carbon来实现此目的。

答案 2 :(得分:0)

试试这个

 DB::table('tble')::where('status',1)
                      ->whereBetween(Carbon::now(), ['start_time', 'end_time'])
                      ->orderBy('id')
                      ->first();