productfeed에서 제품을 가져 와서 내 데이터베이스에 저장하려고합니다. 이제 cakePHP로이 문제를 해결하는 데 어려움을 겪고 있습니다. "products"테이블을 채우는 것은 꽤 쉽지만 "terms"를 채우고 "products_terms"테이블을 조인하는 것은 어렵습니다. 불완전한 데이터가 데이터베이스에 저장되지 않도록 트랜잭션 ($ dataSource = $ this-> Supplier-> Product-> getDataSource();)을 사용하여 제품을 가져옵니다. 이제 용어 테이블이 용어 id에 대해 AutoIncrement를 사용하기 때문에 용어의 ID를 알고 난 후에 만 products_terms 테이블을 채우는 것이 어렵습니다. ID가 아직 존재하지 않으면 products_terms 테이블을 채울 항목을 알 수 없습니다.cakePHP로 테이블 조인하기
https://www.dropbox.com/s/pfakd7xplsvr7cc/db_erd.PNG
아래에있는 내 ERD 사람이 이것에 대한 해결책을 알고 있나요보기?
배열 나는 데이터베이스
array(
'Product' => array(
'slug' => 'c24b626d6701d3b07e30b233b989ff8811',
'product_name' => 'DAHLIA 5A',
'price_new' => '159.00',
'affiliate_url' => 'http://ad.zanox.com/ppc/?utm_source=zanox&utm_medium=banner&utm_campaign=product]]',
'product_id_supplier' => 'c24b626d670133d3b07e30b2b989ff8811',
'supplier_id' => 'zizigo_tr',
'feedimport_id' => (int) 1
),
'Image' => array(
(int) 0 => array(
'image' => 'zizigo_tr_5290e6d296084.JPG'
)
),
'Term' => array(
'Term' => array(
(int) 0 => array(
'name' => 'Tommy Hilfiger'
)
)
)
)
그리고 내 모델에 보내
class Product extends AppModel {
public $name = 'Product';
public $primaryKey = 'product_id';
public $hasMany = array(
'Vote',
'Image'
);
public $hasAndBelongsToMany = array(
'Term' => array(
'className' => 'Term',
'joinTable' => 'products_terms',
'foreignKey' => 'product_id',
'associationForeignKey' => 'term_id',
'unique' => true
)
);
public $belongsTo = array(
'Supplier'
);
}
class Term extends AppModel {
public $name = 'Term';
public $primaryKey = 'term_id';
public $hasAndBelongsToMany = array(
'Product' => array(
'className' => 'Product',
'joinTable' => 'products_terms',
'foreignKey' => 'term_id',
'associationForeignKey' => 'product_id',
'unique' => true
)
);
}
지금까지 시도한 일부 코드를 표시하면 문제를 찾는 데 도움이 될 수 있습니다. 모델은 어떻게 연관되어 있습니까? 현재 컨트롤러 로직은 어떻게 생겼습니까? – Oldskool
그냥 내 대답을 편집했습니다 :) –
데이터를 가져 오는 코드는 어디에 있습니까? –