如何在Yii2的Ticket模型中创建关联以获取最后一条评论?
实现工单最后一条评论的关联方法
直接修改getLastComment方法,通过关联查询并添加排序、限制条件,即可获取工单的最后一条评论:
class Ticket extends ActiveRecord { public function getComments(): ActiveQuery { return $this->hasMany(Comment::class, ['ticket_id' => 'id']); } public function getHandler(): ActiveQuery { return $this->hasOne(User::class, ['id' => 'handler_id']); } public function getLastComment(): ActiveQuery { return $this->hasOne(Comment::class, ['ticket_id' => 'id']) ->orderBy(['datetime' => SORT_DESC]) ->limit(1); } }
关键说明:
- 用
hasOne关联,因为每个工单最多只会有一条“最后评论” - 通过
orderBy(['datetime' => SORT_DESC])按评论时间倒序排列,确保最新评论排在首位 - 加
limit(1)限制只返回第一条结果,也就是目标的最后一条评论
内容的提问来源于stack exchange,提问作者Gote
相关产品推荐
相关产品推荐

