まず最初に、コードの大量投稿で申し訳ありませんが...
私は次のDB構造を持っています(私の選択ではありません):
+---------+ +--------------+ +--------+
| users | | users_groups | | groups |
+---------+ +--------------+ +--------+
| id | | user_id | | id |
| name | | group_id | | name |
+---------+ +--------------+ +--------+
FuelPHP の ORM との関係を作成しました。
class Model_User extends Orm\Model
{
protected static $_properties = array(
'id',
'name',
);
protected static $_has_many = array('usergroup');
}
class Model_Usergroup extends Orm\Model
{
protected static $_table_name = 'users_groups';
protected static $_properties = array(
'user_id',
'group_id',
);
protected static $_belongs_to = array('user', 'group');
}
class Model_Group extends Orm\Model
{
protected static $_properties = array(
'id',
'name',
);
protected static $_has_many = array('usergroup');
}
そして、次を使用して3つのテーブルからすべてのデータを表示するクエリを取得しようとしています:
$data['users'] = Model_User::find()
->related('usergroup')
->related('usergroup.group')
->get();
これを返しています:
Array
(
[1] => Model_User Object
(
[_is_new:Orm\Model:private] =>
[_frozen:Orm\Model:private] =>
[_data:Orm\Model:private] => Array
(
[id] => 1
[name] => somename
)
[_original:Orm\Model:private] => Array
(
[id] => 1
[name] => somename
)
[_data_relations:Orm\Model:private] => Array
(
[usergroup] => Array
(
)
)
[_original_relations:Orm\Model:private] => Array
(
)
[_view:Orm\Model:private] =>
[_iterable:protected] => Array
(
)
)
)
users_groups を見つけ始めていますが、停止していますか? 私はこれを正しい方法で行っていますか?もちろん、結合を使用した通常のクエリでこれを取得できますが、ORM でこれを行う方法を実際に知っておくと便利です。