我有两个实体:User
和Post
。
我想拥有OneToMany关系(一个用户有很多帖子),但我不知道该怎么做。我已经使用yii2-user模块进行授权,注册等工作正常但现在我遇到了如何创建这种关系的问题。
我在Post模型中创建了它:
public function getUser()
{
return $this->hasOne(User::className(),['id' => 'user_id']);
}
但现在我无法从$user->getPosts()
等用户那里获取帖子。
答案 0 :(得分:2)
在您的用户模型中添加一对多关系
public function getPosts()
{
return $this->hasMany(Post::className(),['user_id' => 'id']);
}
然后对于每个用户$ model,您将使用
获取所有帖子$posts = $model->posts;
答案 1 :(得分:1)
,您应该添加hasMany关系 如果你想根据第三方扩展保留你的模型,通常的做法是基于使用你的属性类扩展基类并添加你需要的所有方法
class MyUser extends User
{
public function getPost() {
return $this->hasMany(Post::className(), ['user_id' => 'id']);
}
....
你可以参考
$myUserModel= MyUser::findOne($id)->with('posts');
$myUsermModel->post;
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data
答案 2 :(得分:1)
在用户模型中,您可以这样写:
public function getPosts()
{
return $this->hasMany(Post::className(),['user_id' => 'id']);
}
你得到这样的帖子:
$model = User::findOne($id)->with('posts');