我雄辩的质问:
$data = (new Model())->whereDate('start_date', '<=', Carbon::today())
->whereDate('end_date', '>=', Carbon::today())
->count();
我尝试过的原始查询:
$data = (new Model())->select(DB::raw("COUNT(id) as countData where date(start_date) <= NOW() and date(end_date) >= NOW()"))->get();
我如何将我的雄辩查询写成原始查询。下面的原始查询给出了语法冲突错误;
这是因为您是如何构造查询的。如果你检查生成的SQL语句,你会看到SQLFROM
子句实际上是在语句的末尾,而不是在它应该在的地方。
您将需要拆分WHERE
子句并使用where
或whereRaw
。例如:
$data = (new Model)->select(DB::raw('COUNT(id) as countData'))
->whereRaw('date("start_date") <= NOW() AND date("end_date") >= NOW()')
->get();
你的问题有点不清楚,但是如果你想在原始查询中做你所做的事情,请注意选择函数,所以只需在select中编写查询功能:
$tableName = (new Model)->getTable();
$data = DB::select("
SELECT COUNT(`id`) as `countData` FROM `$tableName`
WHERE DATE(`start_date`) <= NOW() AND DATE(`end_date`) >= NOW()
")->first();
也可以使用whereRaw模型的功能:
$data = Model::whereRaw(
"DATE(`start_date`) <= NOW() AND DATE(end_date) >= NOW()"
)->count();