BELONGS_TO(属于): 如果表 A 和 B 之间的关系是一对多,则 表 B 属于 表 A (例如 Post 属于 User);
HAS_MANY(有多个): 如果表 A 和 B 之间的关系是一对多,则 A 有多个 B (例如 User 有多个 Post);
HAS_ONE(有一个): 这是 HAS_MANY 的一个特例,A 最多有一个 B (例如 User 最多有一个 Profile);
MANY_MANY: 这个对应于数据库中的 多对多 关系。 由于多数 DBMS 不直接支持 多对多 关系,因此需要有一个关联表将 多对多 关系分割为 一对多 关系。
菜鸟们看到这个真的能明白吗?
初学的时候,个人表示头晕至极,经过反复的测试,我给大家非常直白的解释一下。
现有用户表user和博客表blog,博客是属于某个用户的,而用户会发表多篇博客。
BELONGS_TO:
controller
$blogs = $blog_model->with('b_user')->find();
'b_user'=>array(self::BELONGS_TO, 'user', 'author')
$user_blog = $user_model->with('u_blog')->find();
'u_blog'=>array(self::HAS_ONE, 'blog', 'author')
$user_blogs = $user_model->with('u_blogs')->find();
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author')
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content')
'u_blogs'=>array(self::HAS_MANY, 'blog', 'author','select'=>'gid,title,content','condition'=>'u_blogs.gid=2')
以下是一个例子,为 'Post' 活动记录类相关对象的一个示例:
return array( 'author'=>array(self::BELONGS_TO, 'User', 'author_id'), 'comments'=>array(self::HAS_MANY, 'Comment', 'post_id', 'with'=>'author', 'order'=>'create_time DESC'), 'tags'=>array(self::MANY_MANY, 'Tag', 'post_tag(post_id, tag_id)', 'order'=>'name'), );
希望本文所述对大家的yii框架程序设计有所帮助。