gpt4 book ai didi

laravel-5 - 在 Eloquent 中如何按列排序(如果存在)(否则使用另一列)?

转载 作者:行者123 更新时间:2023-12-02 04:13:11 29 4
gpt4 key购买 nike

articles 表有两个时间戳列:created_atpublished_at

仅当用户想要稍后发布文章时才使用 published_at(如果 published_at 不为 null 并且时间尚未到来,文章将被隐藏) .

我想按时间戳对文章进行排序(以显示最新的)。如果时间戳不为空,则排序依据为 published_at,否则使用 created_at

有没有一种 Eloquent 方法可以做到这一点?我想将它与其他约束一起使用,最好将此排序作为范围。

我正在尝试类似的事情

public function scopeRecent($query)
{
$query->orderBy('ifnull(published_at, created_at)');
}

但 MySQL 回复未知列“IFNULL(published_at,created_at)”

最佳答案

如果有人使用 Postgres,它会是这样的:

public function scopeRecent($query){
$query->orderByRaw('COALESCE(published_at, created_at)');
}

关于laravel-5 - 在 Eloquent 中如何按列排序(如果存在)(否则使用另一列)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352204/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com