Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii:如何使用CDbCriteria在GROUP BY之前订购?_Php_Mysql_Group By_Yii_Sql Order By - Fatal编程技术网

Php Yii:如何使用CDbCriteria在GROUP BY之前订购?

Php Yii:如何使用CDbCriteria在GROUP BY之前订购?,php,mysql,group-by,yii,sql-order-by,Php,Mysql,Group By,Yii,Sql Order By,对于这样的查询: SELECT * FROM ( SELECT * FROM message ORDER BY added_on DESC ) as m WHERE receiver_id = 2 GROUP BY sender_id ORDER BY priority_id DESC; 我知道如何使用findAllBySql: $this->findAllBySql( 'SELECT * FROM ( SELECT * FROM message ORDE

对于这样的查询:

SELECT * FROM (
    SELECT * FROM message ORDER BY added_on DESC
) as m WHERE receiver_id = 2 GROUP BY sender_id ORDER BY priority_id DESC;
我知道如何使用
findAllBySql

$this->findAllBySql(
    'SELECT * FROM (
        SELECT * FROM message ORDER BY added_on DESC
     ) as m WHERE receiver_id = :receiverId 
     GROUP BY sender_id 
     ORDER BY priority_id DESC', 
     array('receiverId' => $userId));
但我想知道是否有任何方法可以使用,因为下面的代码当然不起作用:

$criteria = new CDbCriteria();
$criteria->condition = 'receiver_id = :receiverId';
$criteria->group = 'sender_id';
$criteria->order = 'priority_id DESC, added_on DESC';
$criteria->params = array('receiverId' => $userId);

谢谢。

如果您有一个相当复杂的SQL查询,最好将其保存在SQL中,而不是将其写入活动记录中。是的,它限制了数据库的可移植性,但您可能没有一个tun的这些查询,更简单和更可维护的代码总是胜出。

我知道这太晚了。我也有类似的问题,我试着这样做

$criteria = new CDbCriteria();
$criteria->select = '*, MAX(added_on) max_added_on';
$criteria->condition = 'receiver_id = :receiverId';
$criteria->group = 'sender_id';
$criteria->order = 'priority_id DESC, max_added_on DESC';
$criteria->params = array('receiverId' => $userId);

它解决了我的问题。如果您想在模型类中检索max_added_,只需在模型类中添加另一个属性。

这有帮助吗?有趣的是,使用CDbCriteria阅读该链接看起来是不可能的。谢谢因此,看起来使用CDBC标准是不可能的,这是唯一的答案,我接受它。谢谢。FWs,尤其是Yii(我在公司里和它一起工作)有很多令人不舒服的不可能的事情,比如模型有bug,Yii中的会话,不能在关联多维数组中保存值。这就是为什么我也提出了一点,问题不是什么是非常复杂的sql查询的最佳实践。