Laravel如何使用查询构建器将created_at(timestamp)转换为日期?

时间:2017-09-22 09:22:06

标签: php mysql laravel

我尝试将created_date转换为查询构建器的日期,但我没有运气。 我知道我可以使用刀片将其转换为视图,但我在查询中需要这个,因为我想将它用于dataTables函数。 我手动尝试了mysql代码,它正常工作。

这里是我的代码:

$convert = \DB::raw("SELECT DATE_FORMAT((created_at), '%e %c %Y') AS tanggal");
$bonus = bonus_transaction::select('id', "$convert", 'transaction_type', 'amount_usd_out' , 'status_withdraw')
        ->where('transaction_type', 'Reinvest')->get();

我得到了这样的错误

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'SELECT DATE_FORMAT((created_at), %e %c %Y)' in 'field list' (SQL: select `id`, `SELECT DATE_FORMAT((created_at), %e %c %Y)` as `tanggal`, `transaction_type`, `amount_usd_out`, `status_withdraw` from `bonus_transaction_log` where `transaction_type` = Reinvest)"

4 个答案:

答案 0 :(得分:2)

尝试移除SELECT,因为您已经在laravel中select(),请在此处更改

$convert = \DB::raw("DATE_FORMAT('created_at', '%e %c %Y') as tanggal");

答案 1 :(得分:1)

你可以尝试这个.Asi注意到你已经为created_at添加了额外的括号

$convert = \DB::raw("DATE_FORMAT(created_at, '%e %c %Y') AS tanggal");
    $bonus = bonus_transaction::select('id', "$convert", 'transaction_type', 'amount_usd_out' , 'status_withdraw')
            ->where('transaction_type', 'Reinvest')->get();

答案 2 :(得分:0)

我建议使用Model Eloquent来获得更好的解决方案 对于日期只需键入您的模型

protected $dates = ['created_at'];

希望它对你有用

答案 3 :(得分:0)

我终于可以修复我的代码,谢谢大家。在这里答案。

$convert = \DB::raw("DATE_FORMAT(created_at, '%e/%c/%Y') as tanggal");
$bonus = bonus_transaction::select('id', $convert, 'transaction_type', 'amount_usd_out' , 'status_withdraw')->where('transaction_type', 'Reinvest')->get();