Yi2有许多()和via()或viaTable()activeRecord方法语法
我正在尝试创建一个关系查询,使用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.idYi2有许多()和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()
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']);
}