activerecord - 预加载相关模型(嵌套集)

标签 activerecord yii2

在 Yii1 中,我可以使用预先加载来加载父项(嵌套集)。是这样的:

class Category extends CActiveRecord {
    public function relations() {
        return array(
            'parent' => array(self::HAS_ONE, 'Category', '', 'on' => '(t.left between    parent.left and parent.right) and parent.level + 1 = t.level', 'joinType'=>'left join'),
        );
    }
}

(同型号的关系,将第2个参数设置为空,在on参数中设置自己的条件)。

我如何在 Yii2 中做同样的事情? (因为 Yii2 需要 key => value 对来初始化关系)。

最佳答案

尝试这样使用:

public function getRelation()
{
     return $this->hasOne(RelationTable::className(), ['id' => 'relation_id'])->onCondition(array|string)->andOnCondition(array|string);
}

public function getRelation()
    {
         return $this->hasOne(RelationTable::className(), ['id' => 'relation_id'])->andOnCondition(array|string);
    }

更多内容在这里: http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data

关于activerecord - 预加载相关模型(嵌套集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793543/

相关文章:

ruby-on-rails - rails : has_many :through or has_many_and_belongs_to?

mysql - Yii2、ActiveQuery、subQuery 没有带 ID 的条目

Yii 2.0 如何扩展核心类

gridview - 为什么我无法更改 GridView 中的值?

php - CodeIgniter/PHP Active Record 不会递增整数

ruby-on-rails - ActiveRecord:如果我覆盖了 getter 方法,如何获取记录列值?

ruby-on-rails - rails : Trying to render image of users with same attribute

ajax - 为什么 Yii2 验证码无法通过客户端的验证?

redirect - 如何使gridview中的行可点击?

php - 如何在 Codeigniter 中将相关子查询用于事件记录查询