假设我在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
来找到组中的所有用户。如何找到类别中的所有用户?
我会通过调用找到组中的所有用户
$groups = ORM::factory('category', array('id', $id))->groups->find_all();
如何找到类别中的所有用户?
ORM::factory('group', array('id', $id))->users->find_all();
添加 a 有很多通过关系后,您将能够使用 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();