1

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。カテゴリ内のすべてのユーザーを見つけるにはどうすればよいですか?

4

3 に答える 3

1

関係を介しORM::factory('category', $id)->users->find_all()て多くを追加した後、使用できるようになります。

class Model_Category extends ORM
{
    protected $_has_many = array(
        'users' => array('through' => 'groups'),
        // ...
    );
}
于 2012-04-22T04:39:45.850 に答える
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();
于 2012-04-25T19:31:02.507 に答える
1

グループ内のすべてのユーザーを callin で検索します

 $groups = ORM::factory('category', array('id', $id))->groups->find_all();

カテゴリ内のすべてのユーザーを見つけるにはどうすればよいですか?

 ORM::factory('group', array('id', $id))->users->find_all();
于 2012-04-21T08:52:44.327 に答える