Kohana中的嵌套关系3 ORM
问题描述:
假设我在Kohana中有三个ORM模型。Kohana中的嵌套关系3 ORM
class Model_Category extends ORM
{
protected $_has_many = array(
'groups' => array(
'model' => 'group',
'foreign_key' => 'category_id'
)
);
}
class Model_Group extends ORM
{
protected $_has_many = array(
'users' => array(
'model' => 'user',
'foreign_key' => 'group_id'
)
);
}
class Model_User extends ORM
{
}
我会得到一个类别中的所有组通过调用ORM::factory('category')->find($id)->groups
。我会通过致电ORM::factory('group')->find($id)->users
找到一个组中的所有用户。我如何找到一个类别中的所有用户?
答
我会找到一个组中的所有用户通过呼唤
$groups = ORM::factory('category', array('id', $id))->groups->find_all();
我将如何找到一个类别中的所有用户?
ORM::factory('group', array('id', $id))->users->find_all();
+1
如果'id'是主键,则足以调用'ORM :: factory('category',$ id)' – matino 2012-04-21 09:22:15
答
您可以添加后使用ORM::factory('category', $id)->users->find_all()
有很多通过关系:
class Model_Category extends ORM
{
protected $_has_many = array(
'users' => array('through' => 'groups'),
// ...
);
}
答
找到所有的组类别
$groups = ORM::factory('category', $id)->groups->find_all();
遍历组并得到她的用户
foreach ($groups as $group)
{
$users = $group->users->find_all()
}
或建立一个连接,这样
$users = DB::select('users.*')->from('categories')
->join('groups', 'LEFT')
->on('categories.id', '=', 'groups.category_id')
->join('users', 'LEFT')
->on('groups.id', '=', 'users.group_id')
->where('categories.id', '=', $id)
->execute();
通过寻找所有类别组,然后发现在这些组中的所有用户。 – hakre 2012-04-20 19:51:32