2016-10-13 5 views
0

약간의 문제가 있습니다. My Commodity 모델에는 Has가 있고 사용자 모델과 많은 연관이 있습니다. DB에서 그들은 commodities_users 테이블을 통해 관련되어 있습니다. 그래서, 나는 새로운 상품이 생성되었을 때 Cakephp가 DB의 commodities_users 테이블에 새로운 레코드를 생성하기를 원합니다. 그러나 그것은 효과가 없습니다. 내 $this->request->data 배열 (나는 하나 개의 새로운 상품을 저장하려는)이cakephp에 HABTM 관련 데이터 저장

array(
    'Commodity' => array(
     'commodity_type' => '0', 
     'commoditygroup_id' => '', 
     'name' => 'asdfad', 
     'code' => '', 
     'ean' => '', 
     'costprice' => '', 
     'saleprice' => '12512,123', 
     'default_vatrate' => '', 
     'saleprice_gross' => '', 
     'sync_cashconnector' => '1', 
     'commoditysetting_id' => '', 
     'default_amount_enabled' => '0', 
     'default_amount' => '', 
     'stock_min' => '', 
     'stock' => '', 
     'comment' => '' 
    ), 
    'User' => array(
     (int) 0 => array(
      'id' => '23' 
     ), 
     (int) 1 => array(
      'id' => '24' 
     ), 
     (int) 2 => array(
      'id' => '30' 
     ), 
     (int) 3 => array(
      'id' => '31' 
     ) 
)); 

처럼 보인다 그리고 나는 상품 모델을 $this->Commodity->saveAll($this->request->data);

내 CakePHP의 버전은 2.4입니다 이런 식으로 저장하고 있습니다. 관계는

var $hasAndBelongsToMany = array(
      'User' => array(
        'className' => 'User', 
        'joinTable' => 'commodities_users', 
        'foreignKey' => 'commodity_id', 
        'associationForeignKey' => 'user_id', 
      ), 
    ); 

내가 뭘 잘못하고 있니?

+0

cakephp 버전을 언급하지 않았고 모델 코드와 테이블 스키마에도 관계를 표시하지 않았습니다. 만약 당신이 그것을 더 쉽게 공유 할 수 있다면 – tarikul05

+0

@ tarikul05,보세요, 제가 약간의 변화를했습니다. – Vladislav

+0

당신은 당신의 관계에 ** "public"** instate **를 추가 하시겠습니까? – tarikul05

답변

0

좋아, 나 혼자서 해결했다. 나는 상품 모델에서 HABTM 협회를 썼다. 사용자 모델에 대해 동일하게 추가하면 문제가 해결되었습니다. 그리고 $this->reuqest->data 배열은 이렇게 보입니다

array(
    'Commodity' => array(
     'commodity_type' => '0', 
     'commoditygroup_id' => '', 
     'name' => 'asdfad', 
     'code' => '', 
     'ean' => '', 
     'costprice' => '', 
     'saleprice' => '12512,123', 
     'default_vatrate' => '', 
     'saleprice_gross' => '', 
     'sync_cashconnector' => '1', 
     'commoditysetting_id' => '', 
     'default_amount_enabled' => '0', 
     'default_amount' => '', 
     'stock_min' => '', 
     'stock' => '', 
     'comment' => '' 
    ), 
    'User' => array(
     'id' => array(
      '0' => '23', 
      '1' => '24', 
      '2' => '25' 

)); 

감사합니다.

0

saveAll()에 올바른 데이터를 공급하고 있지 않습니다.

array(
    array(
     'Commodity' => array(
      'commodity_type' => '0', 
      'commoditygroup_id' => '', 
      'name' => 'asdfad', 
      'code' => '', 
      'ean' => '', 
      'costprice' => '', 
      'saleprice' => '12512,123', 
      'default_vatrate' => '', 
      'saleprice_gross' => '', 
      'sync_cashconnector' => '1', 
      'commoditysetting_id' => '', 
      'default_amount_enabled' => '0', 
      'default_amount' => '', 
      'stock_min' => '', 
      'stock' => '', 
      'comment' => '' 
     ), 
     'User' => array(
      'User' => array('23','24','30','31') 
     ) 
    ) 
); 

당신은 다음과 데이터를 저장 : 다음과 같이 CakePHP의 워드 프로세서 당으로

, 당신의 데이터를 구조화의 적절한 방법은, 더 참고로

$this->Commodity->saveAll($this->request->data, array('deep' => true)) 

참조

관련 문제