2011-02-01 3 views
0

위시리스트를 생성하려고합니다.데이터 저장에 문제가있는 CakePHP (HABTM)

사용자 및 제품 모델이 있습니다. 사용자에게 희망 목록이 있습니다. 위시리스트에는 많은 제품이 있습니다. 가

나는 사용자가 위시리스트를 가지고 위시리스트 그래서 난 wish_lists 같은 URL을 가질 수 있습니다 제품을 가지고 그것을 만드는 중이라서 이유는 추가/

은/: user_id
나는 테이블이 idwish_lists라고 만든

을 PRODUCT_ID하고, name.

wish_list_idproduct_id으로 products_wish_lists이라는 테이블을 만들었습니다.

class WishListsController extends AppController 
{ 
    var $hasOne = 'User'; 
    var $hasMany = 'Product'; 

    function beforeFilter() 
    {   
     parent::beforeFilter();  
     $this->Auth->deny('add');  
    } 

    function add($id) 
    { 
     $user = $this->Session->read("Auth.User"); 

     $this->WishList->set(array(
      'User.id' => $user['id'], 
      'Product.id'=>$id, 
      'WishList.name'=>'default' 
     )); 

     if($this->WishList->save()) 
     { 
      $this->Session->setFlash('This product has been added to your wishlist.', 'flash_good'); 
     } 
     else 
     { 
      $this->Session->setFlash('Error: This product was not added to your wishlist.', 'flash_bad'); 
     } 

     $this->redirect(array("controller"=>"products","action"=>"view",$id)); 
    } 
} 

내가 localhost/wish_lists/add/1에 갈 때 그것은 저장 한 매번 저에게 말한다 : 나는 여기에서

은 위시리스트 컨트롤러입니다. 그러나 데이터는 데이터베이스에 추가되지 않습니다.

내가 뭘 잘못하고 있는지 확실하지 않은가요?

답변

0

나는 결코 그런 식으로하지 않는다. 나는 항상 $data 배열을 저장 함수에 전달한다.

따라서 문법에 따라 모델을 지정할 수 있는지 여부는 확실하지 않습니다 (예 : 'Model.field'). 어떤 경우 든 $this->WishList->save()은 위시리스트 부분 만 저장합니다.

더 나은, 내 의견으로는, 다음과 같습니다

$saveData = array(
    'User'=>array('id'=>$user['id']), 
    'Product'=>array('id'=>$id), 
    'WishList'=>array('name'=>'default')); 
$this->WishList->saveAll($saveData); 

(또는 같은 것을, 나는 지난 3 개월 동안 ColdFusion에서 프로그래밍 봤는데 내 PHP는 조금 썩은 할 수 있습니다)

0

배열을 잘못 설정했습니다. $ data [ 'User'] [ 'id'] = 123;이어야합니다. $ data [ 'Product'] [ 'id'] = 321;

$ this-> Wishlist-> saveAll ($ data);

제품 표에서 찾을 수있는 이름을 저장하는 것은 아닙니다.

당신이 더 많은 아이디어 https://github.com/Infinitas-Plugins/shop

는 거의 같은 일을 같은 카트 또는 위시리스트에 제품 (다른 DB를의)를 저장하는 다음 링크에서 일반 구성 요소 방법이 여기 코드를 살펴 수 있습니다 .

https://github.com/Infinitas-Plugins/shop/blob/master/controllers/components/shop.php#L62

관련 문제