#11
先日からの続きです。
/users/home/に自分の予約したセミナーを表示するようにしてみる。
とりあえず、以下のようにソースを修正。
/controllers/users_controller.php
<?php class UsersController extends AppController { var $name = 'Users'; var $uses = array('User','Seminar','Reserve'); function home (){ $this->checkSession(); $this->set('me', $this->User->findById($this->Session->read('my_id'))); } } ?>
/models/user.php
<?php class User extends AppModel { var $name = 'User'; var $validate = array ( 'email' => VALID_EMAIL, ); var $hasMany = array ('Reserve'); } ?>
/models/seminar.php
<?php class Seminar extends AppModel { var $name = 'Seminar'; var $hasMany = array('Reserve'); } ?>
/models/reserve.php
<?php class Reserve extends AppModel { var $name = 'Reserve'; var $belongsTo = array('User','Seminar'); } ?>
/views/users/home.thtml
<div id="my_page"> <h2><a href="/users/home/"><?php echo $me['User']['name']; ?></a></h2> <div id="contents"> <div id="menu" > <ul> <li><a href="/work/yoyaku/users/home">Home</a></li> <li><a href="/work/yoyaku/users/seminar">Seminar</a></li> <li><a href="/work/yoyaku/users/diary">Diary</a></li> <li><a href="/work/yoyaku/users/edit">Settings</a></li> <li><a href="/work/yoyaku/users/logout/">Logout</a></li> </ul> </div><!-- /menu --> <h3>My Profile</h3> <div id="my_profile" > <p><?= $me['User']['profile']; ?></p> <?php print_r ($me); print "<br>"; ?> </div> </div> </div>
実行結果
セミナーの情報までは取れていないですね。
で、ここを参照。
http://cakephp.jp/doc/ch06s03.html
$recursiveってやつを使えばよさそうです。
(reserveの情報が取れているということは、
デフォルトは$recursive = 1なのかな)
で、これをUserモデルに追加すればいいんだよな?
ということで、
/models/user.php
<?php class User extends AppModel { var $name = 'User'; var $recursive = 2; var $validate = array ( 'email' => VALID_EMAIL, ); var $hasMany = array ('Reserve'); } ?>
ついでに以下をちょっと見たところ、
http://cakephp.jp/doc/ch06s04.html#id4803164
reserveテーブルはJOINテーブルに当たるらしいということが判明。
cakePHPの標準に従うために、テーブル名も変更してみよう。
変更したら、hasAndBelongsToManyを使うんだな。
ということで、今日はここまで!