【发布时间】:2018-08-30 17:59:05
【问题描述】:
我的模型看起来像:
protected $appends = array('status');
public function getStatusAttribute()
{
if ($this->someattribute == 1) {
$status = 'Active';
} elseif ($this->someattribute == 2) {
$status = 'Canceled';
...
} else {
$status = 'Some antoher status';
}
return $status;
}
我想通过status 属性订购这些模型的集合,可以吗?
Model::where(...)->orderBy(???)
附言我需要的是 orderBy,而不是 sortBy 解决方案。
【问题讨论】:
-
你可以
->orderBy("someattribute")吗?如果没有,则有->orderByRaw(),您可以在其中使用CASE IF ...等扩展排序。除此之外,当您拥有status属性时,它不再是查询构建器实例,而是Collection,这将使用sortBy(你说的不好) -
no.. append 属性在查询后生成.. 你需要在查询后进行集合排序
-
为什么它必须是
orderBy()解决方案?
标签: php laravel laravel-query-builder