created_atとupdated_atのlaravelの雄弁なモデル定数をオーバーライドしようとしています:
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)"
これを機能させるために他に何かする必要があることはありますか?
latest()
常にcreated_at
デフォルトで使用します。列名は自分で指定する必要があります。
Visit::latest(Visit::CREATED_AT)->get();
モデルにローカルスコープを追加することで、デフォルトの動作をオーバーライドできますVisit
。
public function scopeLatest($query)
{
return $query->orderByDesc(static::CREATED_AT);
}
更新:これはLaravel 5.7で修正されます:https://github.com/laravel/framework/pull/24004
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加