일반적인 판매자, 항목 및 이미지가있는 사이트가 있습니다. 모델은 다음과 같이 :CakePHP : 검색된 데이터의 형식이 연결된 모델에 따라 달라지는 이유
class Seller extends AppModel {
$hasMany = array('Item');
...
}
class Item extends AppModel {
$belongsTo = array('Seller')
$hasMany = array('Image');
...
}
class Image extends AppModel {
$belongsTo = array('Item');
...
}
내 문제는 내가 항목의 목록을 검색 할 때, 데이터가 나는 모든 항목의 목록을 얻고 여부에 따라 다른 형식에서 오는 것입니다 (로 표시 public) 또는 SellerController의 Seller 및 해당 항목에 대한 세부 정보를 제공합니다. Seller->find('first', ...)
가 Images
요소가 Item
부분에 중첩되는 제 2 경우
array( 'Seller' => array(<seller stuff>),
'Item' => array of array (<item stuff>
'Images' => array of array(<image stuff>));
으로 항목을 검색하는 반면
간단히 Item->find('all')
는
array( 'Item' => array(<item stuff>),
'Images' => array of array(<image stuff>));
배열을 검색한다. 데이터를 다르게 형식화하면 View 코드를 다시 사용하기가 어려워집니다. 또한 내 상품 afterFind()
이 제대로 작동하지 않을 경우 이미지 비트가 예상 한 곳에 있지 않을 때 문제가 발생합니다.
질문
2 상황에서 'Item'
부분 내에 중첩되는 'Images'
부분을 방지하는 간단한 방법이 있나요?
array(
(int) 0 => array(
'Item' => array(
'id' => '1',
'title' => 'tom item 1',
'seller_id' => '1'
),
'Seller' => array(
'id' => '1',
'name' => 'tom'
),
'Images' => array(
(int) 0 => array(
'id' => '1',
'item_id' => '1',
'path' => 'tom_1_1'
),
(int) 1 => array(
'id' => '2',
'item_id' => '1',
'path' => 'tom_1_2'
)
)
),
(int) 1 => array(
'Item' => array(
'id' => '2',
'title' => 'tom item 2',
'seller_id' => '1'
),
'Seller' => array(
'id' => '1',
'name' => 'tom'
),
'Images' => array(
(int) 0 => array(
'id' => '3',
'item_id' => '2',
'path' => 'tom_2_1'
),
(int) 1 => array(
'id' => '4',
'item_id' => '2',
'path' => 'tom_2_2'
)
)
),
...
단일 판매자 + 관련 항목 :
// in ItemsController.php
debug($this->Item->find('all'));
이 생성됩니다
나는 더 많은 세부 사항 케이크를
모든 항목을 2.4
형식을 사용하고 있습니다 :
// In SellersController.php
debug($this->Seller->find('first',
array('conditions' => array('id' => $id), 'recursive' => 2)));
는 생산 :
array(
'Seller' => array(
'id' => '1',
'name' => 'tom'
),
'Item' => array(
(int) 0 => array(
'id' => '1',
'title' => 'tom item 1',
'seller_id' => '1',
'Seller' => array(
'id' => '1',
'name' => 'tom'
),
// Look! 'Images' is WITHIN 'Item !!!
'Images' => array(
(int) 0 => array(
'id' => '1',
'item_id' => '1',
'path' => 'tom_1_1'
),
(int) 1 => array(
'id' => '2',
'item_id' => '1',
'path' => 'tom_1_2'
)
)
),
(int) 1 => array(
'id' => '2',
'title' => 'tom item 2',
'seller_id' => '1',
'Seller' => array(
'id' => '1',
'name' => 'tom'
),
'Images' => array(
(int) 0 => array(
'id' => '3',
'item_id' => '2',
'path' => 'tom_2_1'
),
(int) 1 => array(
'id' => '4',
'item_id' => '2',
'path' => 'tom_2_2'
)
)
),
....