相关疑难解决方法(0)

Yii:按条件排序

我使用CActiveDataprovider来显示来自不同表的数据.现在我遇到了问题.我有两个表(项目和类别),他们都有priority_order列,我需要使用两个列的顺序显示数据.

例如:属于这些类别的有两个类别和六个项目:

  • 食物(priority_order 1)
    1. food_item1(priority_order 1)
    2. fodd_item2(priority_order 2)
    3. fodd_item3(priority_order 3)
  • 喝(priority_order 2)
    1. drink_item1(priority_order 1)
    2. drink_item2(priority_order 2)
    3. drink_item3(priority_order 3)

现在我需要完全按照上面的顺序显示CGridView中的数据.所有食品都将首先出现,并按优先顺序排序,饮品将在稍后出现; 显然在他们的顺序.

ItemsController我尝试下面的代码(现在只按类别排序)

$dataProvider = new CActiveDataProvider('Items', array(
                'criteria' => array(
                    'with' => array('category'),
                    'condition' => 'user_id=' . Yii::app()->user->id,
                    //'order' => 't.priority_order ASC',
                    'order' => 'category.priority_order ASC',
                ),
      ));
Run Code Online (Sandbox Code Playgroud)

如果仍然不够清楚,我很乐意提供更多细节.任何帮助,将不胜感激.

php yii

4
推荐指数
1
解决办法
6738
查看次数

Yii2:如何使用mysql在Find()的orderby()中添加两个字段和NULLS LAST

尝试做与此问题类似的事情,但需要对 MySQL 的 NULLS LAST 进行排序

就像是...

$query->MODEL_NAME::find(); 
$query->orderBy(['column_1' => 'IS NULL','column_1'=> SORT_DESC]);
Run Code Online (Sandbox Code Playgroud)

虽然这个语法是错误的。谢谢!

当我尝试时orderBy('column_1 IS NULL ASC, column_1 desc')出现错误

SQLSTATE[42S22]:未找到列:1054 未知列。正在执行的 SQL 是:SELECT * FROM 'table' ORDER BY 'due_date IS NULL'

注意:必须将上面错误中的反引号替换为单引号才能在此处显示。

php mysql yii2

3
推荐指数
1
解决办法
3295
查看次数

使用 mysql 按多列排序

下面显示的是我需要用这三列进行排序的查询。这是用于复杂的搜索列表。如果我使用其中之一,它就会完美地工作。但处理不止一个时,它无法正确排序。

编辑

其实我需要的是,优质唱片一定要排在第一位,而且喜欢的唱片也比较多,而且精英客户有更多的优先权。这些都是有条件的

1)首先会出现更多最爱

2) 但会考虑保费

3) 如果 basic 有 5 个收藏夹,则不会推到顶部,basic 的优先级较小

4)精英也有一些好的优先权

SELECT  
   `Driver`.`id` ,  
   `Driver`.`login_id` ,  
   `Login`.`profile_type`, 
   .................
ORDER BY  `fav_count`, 
   FIELD(  `Login`.`profile_type` ,  "premium",  "basic" ) ,  
   `Driver`.`is_elite` ASC
Run Code Online (Sandbox Code Playgroud)

我预期的示例结果

is_elite|       profile_type  | fav_count
________|_____________________|____________
1       |        premium      |   4      
1       |        premium      |   3 
1       |        premium      |   2 
1       |        premium      |   1 
0       |        basic        |   5 
0       |        basic        |   0
Run Code Online (Sandbox Code Playgroud)

请建议我 。谢谢

php mysql

1
推荐指数
1
解决办法
6870
查看次数

标签 统计

php ×3

mysql ×2

yii ×1

yii2 ×1