簡體   English   中英

MySQL復雜的順序由Query等效於Yii2 Active記錄

[英]MySQL complex order by Query equivalent in Yii2 Active record

我需要按status字段排序表數據,但我還想首先顯示一些具有特定status

目前我可以使用MySQL實現這一點:

SELECT status FROM item
ORDER BY status NOT LIKE '%order-status%',  status

因此,所有項目的order-status訂單狀態將首先顯示,然后其他訂單按狀態排序。

但是我無法在Yii2 Active Record中實現這一點。 我試着寫下這樣的東西:

$query->orderBy(['not like', 'item.status', 'order-status']);
$query->orderBy(['item.status' => SORT_ASC]);

但它不正確。 有沒有辦法在Active Record中實現這一目標?

您可以使用yii\\db\\Expression創建自定義order by子句。 您的要求的查詢將如下所示:

$query->orderBy(new yii\db\Expression("status NOT LIKE '%order-status%',  status"))

Expression實例中傳遞的此參數將由Yii 2查詢構建器直接使用。 有關更多詳細信息,請閱讀Expression文檔

您可以在orderBy使用字符串,如下所示:

$query->orderBy("status NOT LIKE '%order-status%',  status");

要么

$query->orderBy("status NOT LIKE '%order-status%'")
     ->addOrderBy('status');

有用的鏈接: db-query-builder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM