我在 eloquent 查询生成器中得到空结果,而复制 sql(从 ->toSql() 函数)并在 phpadmin 中运行它可以完美地工作。这是我的查询:
$reportData=DB::table('my_table')
->select('my_table.*')
->whereRaw("STR_TO_DATE(my_table.date, '%m.%Y') >= STR_TO_DATE('01.2017', '%m.%Y')")
toSql 返回的 sql 等效项是:
select *
from my_table
where STR_TO_DATE(my_table.date, '%m.%Y') >= STR_TO_DATE('01.2017', '%m.%Y')
注意:我在 whereRaw 中使用了另一个 mysql 函数,如 UPPER、DATE_FORMAT,这没有问题;但它有 STR_TO_DATE。
我查看了官方网站,STR_TO_DATE 应该适用于 MySQL 5.7、MySQL 5.6、MySQL 5.5、MySQL 5.1、MySQL 5.0、MySQL 4.1、MySQL 4.0、MySQL 3.23。
请帮忙 :)
--更新--我重新检查了 mysql_log,在这里我有: - 第一个日志 (id=1) 是在通过 laravel 运行查询时创建的 - 第二个日志 (id=2) 来自 phpmyadmin