サイト内お気に入り機能をCakePHPで作る。その3
こちらの続きです。
サイト内お気に入り機能をCakePHPで作る。その2 - 新米SE、マーケティングを学ぶの巻
さて、前回まではユーザを1人として想定していました。
複数ユーザの場合はどうなるでしょう。
お気に入り登録時のuserIdを2にして試してみます。
各ボタンのお気に入り登録データをデバッグしてみました。
二つともお気に入り登録されて見えますが、ユーザ1もユーザ2も一つのボタンしか
お気に入り登録をしていません…
これは、他人のお気に入り情報まで取得しているためです。
利用者がユーザ1ならば、取得するのはユーザ1のお気に入り情報のみです。
ではその制限を行うためにButtonsControllerをいじっていきます!
ButtonsController
public function index(){ $userId = 1; //特定のユーザのみのお気に入り情報を対象とする $conditions = 'Favo.user_id = '.$userId; //ButtonModelとFavoModelの関連づけ $this->Button->bindModel( array('hasMany' => array( 'Favo' => array( 'className' => 'Favo', 'foreignKey' => 'button_id', 'dependent' => false, 'conditions' => $conditions ) ) ) ); $data = $this->Button->find('all'); $this->set(compact('data')); }
これで各ユーザに対応した機能になりました!