Yii2 有 Many() 和 via() 或 viaTable() activeRecord 方法语法



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

我想创建这样的关系:user.id -> favorites.user_id &&favorites.object_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']);
}

}

但是当我尝试获取最喜欢的用户时,我得到空。

   /**
     * 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']);
    }

相关内容

最新更新