Php 在关系中使用self::STAT查找单个最新的相关记录

Php 在关系中使用self::STAT查找单个最新的相关记录,php,sql,yii,Php,Sql,Yii,我现在有两个表,分别是tbl_user和tbl_log,以及user和logActiveRecord类 tbl_日志 `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `log_date` datetime NOT NULL, `remarks` varchar(255) NOT NULL, 用户类关系 public function relations() { return array(

我现在有两个表,分别是
tbl_user
tbl_log
,以及
user
log
ActiveRecord类

tbl_日志

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `log_date` datetime NOT NULL,
  `remarks` varchar(255) NOT NULL,
用户类关系

public function relations() {
    return array(
        'rLog' => array(self::HAS_MANY, 'Log', 'user_id'),
    );
}
我试图实现的是在
tbl\u log
上检索属于某个用户的最新记录

我已尝试将以下关系添加到
User
类:

'lastLogDate' => array(self::STAT, 'Log', 'user_id', 'select'=>'log_date', 'order'=>'log_date DESC', 'group'=>'user_id', 'defaultValue'=>'N/A'),
因此,我可以通过调用以下命令从最新记录中检索
log\u date

$model = User::model()->findByPk($id);
echo $model->lastLogDate;
但后来我意识到它实际上工作不正常。返回的
log\u日期始终来自
tbl\u log
表上具有最小
id
的记录,这可能是由于在SQL查询中GROUP BYORDER BY的行为所致


现在,我想知道如何(如果可能的话)通过使用类似的方法(即在ActiveRecord类中使用关系)来实现这一点?提前感谢。

使用“订单”和“限额”的想法,例如:

'order'=>'log_date DESC',
'limit'=>1,
但是当使用这种类型的关系时,您错了,它用于统计返回的记录,而不是最新记录

我通常不会这样使用它,相反,我会:

Log
模型中,您应该具有:

public function relations()
    {
        return array(
            'belongUser' => array(self::BELONGS_TO, 'User', 'user_id'),
    }
这很简单,如下所示

//get first found Log record of the user by given user_id and sort by log_date DESCENDANT
    $lastLogDateRecord = Log::model()->with(array(
        'belongUser' => array(
            'condition' => 'user_id = :user_id',
            'params' => array('user_id'=>$id) //$id is user_id param what user want
        )
    ))->findByAttributes(array(), array('order' => 'log_date DESC'));