新米SE、マーケティングを学ぶの巻

Web系のプログラミングの記事や、マーケティングについて書いていきます。

サイト内お気に入り機能をCakePHPで作る。その3

こちらの続きです。
サイト内お気に入り機能をCakePHPで作る。その2 - 新米SE、マーケティングを学ぶの巻

さて、前回まではユーザを1人として想定していました。
複数ユーザの場合はどうなるでしょう。
お気に入り登録時のuserIdを2にして試してみます。


f:id:se312:20150316224158j:plain
各ボタンのお気に入り登録データをデバッグしてみました。
二つともお気に入り登録されて見えますが、ユーザ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'));
}

これで各ユーザに対応した機能になりました!