假设我在Kohana有三个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
找到组中的所有用户。我如何找到一个类别中的所有用户?
答案 0 :(得分:1)
我会通过callin
找到一组中的所有用户 $groups = ORM::factory('category', array('id', $id))->groups->find_all();
如何查找某个类别中的所有用户?
ORM::factory('group', array('id', $id))->users->find_all();
答案 1 :(得分:1)
在添加了多个到关系后,您将可以使用ORM::factory('category', $id)->users->find_all()
:
class Model_Category extends ORM
{
protected $_has_many = array(
'users' => array('through' => 'groups'),
// ...
);
}
答案 2 :(得分:1)
查找类别中的所有组
$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();