Laravel自定义created_at和updated_at

Zac*_*ams 2 php laravel eloquent laravel-eloquent

我试图覆盖created_at和updated_at的laravel eloquent模型常量:

namespace App;

use Illuminate\Database\Eloquent\Model;

 class Visit extends Model
 {
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
 }
Run Code Online (Sandbox Code Playgroud)

然后获取最新条目:

dd(Visit::latest()->get());
Run Code Online (Sandbox Code Playgroud)

但我得到一个未知的列错误:

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'created_at' in 
'order clause' (SQL: select * from `visits` order by `created_at` desc)"
Run Code Online (Sandbox Code Playgroud)

为了让这个工作还有什么需要做的吗?

Jon*_*eir 7

latest()始终created_at默认使用.您必须自己指定列名称:

Visit::latest(Visit::CREATED_AT)->get();
Run Code Online (Sandbox Code Playgroud)

您可以通过向模型添加本地范围来覆盖默认行为Visit:

public function scopeLatest($query)
{
    return $query->orderByDesc(static::CREATED_AT);
}
Run Code Online (Sandbox Code Playgroud)

更新:这将在Laravel 5.7中修复:https://github.com/laravel/framework/pull/24004