0
モデルを2つの列で並べ替える方法が必要です(ただし、x、yの順序ではありません)。私はpriority
が設定されていないときに結果をモデル化し、created_at
標準化キーであるべき標準であるpriority
列を持っています。私がこれをするために見つけた唯一の方法は、組合と一緒だった。Laravelスコープとユニオン
(SELECT * FROM `charts` WHERE priority IS NOT NULL ORDER BY priority ASC)
UNION (SELECT * FROM `charts` WHERE priority IS NULL AND created_at IS NOT NULL ORDER BY CREATED_AT ASC)
UNION (SELECT * FROM `charts` WHERE created_at IS NULL)
だから私のような何かをしようとした:
public function scopeSortPriority($query)
{
return $query->whereNotNull('priority')
->orderBy('priority')
->union($query->whereNull('priority')
->whereNotNull('created_at')
->orderBy('created_at'))
->union($query->whereNull('priority')
->whereNull('created_at'));
}
をしかし、それは悲しげに動作しません。このようなクエリでは
。
私はSQLで何をしたいのですか?さもなければ - 私はそれを動作させるためにこの範囲をどのように再構築すべきですか?
私はあなたに優先度を設定示唆しますあなたが '優先順位desc、created_at'で注文することができるように、すべてのモデル(それがほとんどの場合0であっても)。優先度が同じ場合に作成されます。 – apokryfos