CakePHP - Расширенные модельные ассоциации - PullRequest
3 голосов
/ 27 февраля 2012

Мне очень любопытно, что мне не хватает.Только пример поможет объяснить, но вот первый вопрос предложения: Inventory и InventoryCategory - оба имеют ассоциации изображений.Когда я просматриваю одну InventoryCategory и связанный с ней Inventory, мне нужны обе ассоциации изображений.В настоящее время я вернул только InventoryCategory-> Image.Для инвентарных предметов изображения не возвращаются.Вот что у меня в моделях:

Inventory:
 public $belongsTo = 
  array(
     'User' 
   , 'InventoryCategory' 
   , 
  );

 public $hasMany = 
  array(
     'Image' => array
    (
       'className' => 'Media.MediaImage' 
     , 'foreignKey' => 'foreign_key' 
     , 'conditions' => array(
          'Image.model' => 'Inventory' 
        , 'Image.group' => 'Image' 
        , 
       )
     , 'dependent' => true 
     , 'order' => 'Image.rank ASC, Image.id ASC' 
    ) 
   , 
  );

 public function containedModels() 
 {
  $contain = array(
      'Image' 
    , 'User' 
    , 'InventoryCategory' 
    , 
  );
  return $contain;
 }
InventoryCategory
 public $hasOne = 
  array(
    'Image' => array
    (
       'className' => 'Media.MediaImage' 
     , 'foreignKey' => 'foreign_key' 
     , 'conditions' => array(
          'Image.model' => 'InventoryCategory' 
        , 'Image.group' => 'Image' 
        , 
       )
     , 'dependent' => true 
     , 
    ) 
   ,   
  );

 public $hasMany = 
  array(
     'Inventory' 
   , 
  );

 public function containedModels() 
 {
  $contain = array(
      'Image' 
    , 'Inventory' 
    , 
  );
  return $contain;
 }

1 Ответ

2 голосов
/ 27 февраля 2012

Если вы пытаетесь откатить оба отношения Image в пределах одной функции find (), то у вас возникнут проблемы, поскольку CakePHP только выберет одно из тех же именованных отношений, ему нужно как-то устранить неоднозначность и будет либо сгенерируйте ошибку, либо просто выберите первое найденное отношение (которое, по-видимому, является тем, что вы видите).

Я бы рекомендовал называть отношения с Media.MediaImage чем-то уникальным в обоих случаях, например. InventoryImage и InventoryCategoryImage, а не просто изображение.

...