Laravel 自定义 created_at 和 updated_at
Laravel custom created_at and updated_at
我正在尝试覆盖 laravel eloquent 模型常量 created_at 和 updated_at:
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)"
还有什么需要做的才能让它正常工作吗?
因为默认情况下最新获取 created_at 可能会在此处检查 here
与您相同的问题和相同的代码
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
我正在尝试覆盖 laravel eloquent 模型常量 created_at 和 updated_at:
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)"
还有什么需要做的才能让它正常工作吗?
因为默认情况下最新获取 created_at 可能会在此处检查 here 与您相同的问题和相同的代码
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