ttgive / qeephp

Automatically exported from code.google.com/p/qeephp
0 stars 0 forks source link

ActiveRecord 关联额外的操作机制 #57

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
为 ActiveRecord 
的关联提供一个额外的操作机制用于关联数据的检索、删除��
�更新
和添加等操作。

查找符合条件的关联对象:

{{{
// post has_many comment
$post = Post::find('post_id = ?', $post_id)->query();
$post->comments->where('level_ix > ?', $level_ix)->getAll();
// 此时 $post->comments 将包含 level_ix > $level_ix,并且属于 $post 
的
Comment 对象
}}}

删除符合条件的关联对象:

{{{
$post->comments->where('level_ix > ?', $level_ix)->removeAll();
}}}

更新符合条件的关联对象:

{{{
// 将 level_ix > $level_ix 并且属于 $post 的 Comment 对象的 level_ix 
更新为
$new_level_ix
$post->comments->where('level_ix > ?', $level_ix)->update(array('level_ix'
=> $new_level_ix));
}}}

在关联中添加对象,主要用于 many_to_many 
关联,因为要维护中间表保存的关联关
系,必须每次更新时都提供全部的关联对象。这样毫无疑问��
�率较低。

{{{
// Post many_to_many Tag
// 将 Post 和一个 Tag 关联起来
$post->tags->band(Tag::find('name = ?', 'PHP')->query());
// 解除指定 Tag 与 Post 的关联
$post->tags->unbind(Tag::find('name = ?', 'PHP')->query());
// 解除符合条件的 Tag 与 Post 的关联
$post->tags->where('name = ? OR name =?', 'PHP', 'Java')->unbind();
}}}

Original issue reported on code.google.com by dualf...@gmail.com on 3 May 2008 at 8:03