情報が不足しておりましたので、追記します。
cakephp 2.7になります。
以前お気に入り機能について原因がわからないということでお聞きしていましたが、
原因がわかって自分なりに考えてみて実装しているのですが、
やはりできません。
お気に入りを追加する部分はとりあえず実装できたのですが、
削除ができません。
**>>favoriteテーブルの情報を削除したいと思っております。
流れとしてはこのような下記になります。
====追加処理====
①AユーザがB記事をお気に入り登録をクリック
②favoriteテーブルにuser_idとpost_idを格納
====削除処理====
③AユーザがB記事のお気に入り解除をクリック
④現在ログインしているユーザのuserのid = user_idと
お気に入り解除をクリックしたpostのid = post_idの
2つに合う、Favoriteテーブルの内容を削除
favoriteテーブルは、
id
post_id
user_id
create
modified**
以前の原因としては、認証の部分のせいでアクセスできない状態でした。
今は、認証部分でエラーが出ています。
ERROR
Error: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'user_id' in where clause is ambiguous
>>SQLは関係のない部分のsqlでした。
user_idがpostsテーブルとfavoriteテーブルの両方にあるため、
どちらかのテーブルを選択しないといけないのですが、
どのようにすればいいか。。。
PHP
1POSTモデル 2 3public function favoriteOwnedBy($postId, $userId) { 4 $Favorite = ClassRegistry::init('Favorite'); 5 return $this->Favorite->field('Favorite.id', array('Favorite.post_id' => $postId, 'Favorite.user_id' => $userId)) !== false;
PHP
1Postsコントローラー 2public function isAuthorized($userId) { 3 // 登録済ユーザーは投稿できる 4 if ($this->action === 'add') { 5 return true; 6 } 7 8 // 投稿のオーナーは編集や削除ができる 9 $userId = $this->Auth->user('id'); 10 if (in_array($this->action, array('edit', 'delete'))) { 11 $postId = (int) $this->request->params['pass'][0]; 12 if ($this->Post->isOwnedBy($postId, $userId)) { 13 return true; 14 } 15 } else if(in_array($this->action, array('favoajax','deletefavoajax'))){ 16 $postId = $this->request->data['postId']; 17 if($this->Post->favoriteOwnedBy($postId, $userId)){ 18 return true; 19 } 20 } 21 echo 'アクセス不可'; 22 }
足りない情報などがあれば言ってください。
宜しくお願い致します。。。
回答1件
あなたの回答
tips
プレビュー