Yi2有许多()和via()或viaTable()activeRecord方法语法

Yi2有许多()和via()或viaTable()activeRecord方法语法,activerecord,yii2,Activerecord,Yii2,我正在尝试创建一个关系查询,使用yii2activerecord方法使用连接表。 表收藏夹包含用户id和对象id列。col object_id链接到user.id,col user_id链接到user.id。这是一对N的关系 我想创建如下关系: user.id->favorites.user\u id&&favorites.object\u id->user.id class User extends ActiveRecord { public function getFavorites()

我正在尝试创建一个关系查询,使用yii2activerecord方法使用连接表。 表收藏夹包含用户id和对象id列。col object_id链接到user.id,col user_id链接到user.id。这是一对N的关系

我想创建如下关系: user.id->favorites.user\u id&&favorites.object\u id->user.id

class User extends ActiveRecord
{

public function getFavorites()
{
    return $this->hasMany(Favorite::className(), ['user_id' => 'id' ]);
}

public function getFavoriteUsers()
{
    return $this->hasMany($this::className(), ['user_id' => 'object_id', 'subject_id' => Subjects::PROFILE ])->via('favorites');
}

public function getFavoriteUsersViaTable()
{
    return $this->hasMany($this::className(), ['user_id' => 'object_id', 'subject_id' => Subjects::PROFILE ])->viaTable('{{%favorites}}', ['object_id' => 'id']);
}


}
但是,当我试图获取最喜欢的用户时,我得到了null

   /**
     * relation user.id -> (1 to N) favotites.user_id
     *
     * @return Favorites[]|null
     */
    public function getFavorites()
    {
        return $this->hasMany(Favorite::className(), ['user_id' => 'id' ]);
    }

    /**
     * relation user.id -> (1 to N) { favotites.user_id | favorites.object_id } -> (1 to 1) user.id
     *
     * @return Users[]|null
     */
    public function getFavoriteUsers()
    {
        return $this->hasMany(self::className(), ['id' => 'object_id'])->via('favorites');
    }

    public function _getFavoriteUsers()
    {
        return $this->hasMany(self::className(), ['id' => 'object_id'])
            ->viaTable(Favorite::tableName(), ['user_id' => 'id']);
    }