我试图覆盖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';
}
然后获取最新条目:
dd(Visit::latest()->get());
但是收到了一个未知的列错误:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'created_at' in
'order clause' (SQL: select * from `visits` order by `created_at` desc)"
还有什么需要做才能让它发挥作用吗?
答案 0 :(得分:7)
latest()
始终使用created_at
。您必须自己指定列名称:
Visit::latest(Visit::CREATED_AT)->get();
您可以通过向Visit
模型添加local scope来覆盖默认行为:
public function scopeLatest($query)
{
return $query->orderByDesc(static::CREATED_AT);
}
更新:这将在Laravel 5.7中修复:https://github.com/laravel/framework/pull/24004
答案 1 :(得分:0)
因为默认情况下最新获取created_at,请查看此处here 与您和相同代码相同的问题