3

私は何が欠けているのか非常に興味があります。例だけが説明に役立ちますが、最初に文の質問があります: Inventory と InventoryCategory - どちらも Image 関連付けがあります。単一の InventoryCategory と関連する Inventory を表示すると、両方の Image の関連付けが必要になります。現在、InventoryCategory->Image のみが返されます。Inventory アイテムの画像は返されません。これは私がモデルに持っているものです:

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;
 }
4

1 に答える 1

2

単一の find() 内で両方の Image リレーションシップを取り戻そうとしている場合、CakePHP は同じ名前のリレーションシップの 1 つだけを選択するため、問題が発生します。エラーを表示するか、最初に見つかった関係を選択するだけです (これが表示されているようです)。

Media.MediaImage との関係を、どちらの場合も固有のものと呼ぶことをお勧めします。たとえば、Image だけでなく、InventoryImage と InventoryCategoryImage などです。

于 2012-02-27T13:36:02.097 に答える