FuelPHPでOrmモデルの1対1でリレーションした表を簡単に一覧表示させる方法
FuelPHPでOrmモデルの1対1でリレーションした表を一覧表示させたい。
まず、2つのテーブルを用意する。
staffテーブル
id | name |
---|---|
1 | 山田 太郎 |
2 | 田中 花子 |
profileテーブル
id | hobby | favorite_food |
---|---|---|
1 | サッカー | うどん |
2 | 映画鑑賞 | パスタ |
Model_StaffとModel_Profileの2つのモデルで下記のソースを書きリレーションさせる。
1 2 3 4 5 6 7 8 9 |
protected static $_has_one = array( 'profile' => array( 'key_from' => 'id',//結合条件の自分側のモデルのid 'model_to' => 'Model_Profile',//結合相手のモデル 'key_to' => 'id',//結合先のid 'cascade_save' => true,//相手のモデルも更新するかどうか。 'cascade_delete' => true,//相手のモデルも削除するかどうか。 ), ); |
1 |
$data['staffs'] = Model_Staff::query()->get(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<table> <tr> <th>名前</th> <th>趣味</th> <th>好きな食べ物</th> </tr> foreach($staffs as $staff){ echo '<tr>'; echo '<td>'.$staff->name.'</td>'; echo '<td>'.$staff->profaile->hobby.'</td>'; echo '<td>'.$staff->profaile->favorite_food.'</td>'; echo '</tr>'; } </table> |
name | hobby | favorite_food |
---|---|---|
山田 太郎 | サッカー | うどん |
田中 花子 | 映画鑑賞 | パスタ |