2014-09-25 4 views
0

У меня есть некоторые проблемы с двумя ассоциациями в одной модели .. Немного ПИК делает моя проблема, надеюсь, немного понятнее ..CakePHP: Множественные отношения с одной модели

http://imgur.com/hxL06u2 (жаль, что я не могу размещать фотографии здесь)

поэтому у меня есть пользователи, которые могут писать/писать статьи. Один пользователь может писать несколько статей, а одна статья может принадлежать только одному пользователю (имеет много).

теперь пользователи могут любить статьи от других пользователей. .. это есть и принадлежит многим отношениям .. моя проблема в том, когда я создаю свалки sql статьи:

Cannot add or update a child row: a foreign key constraint fails (`xxx`.`articles_users`,... 

так торт использует неправильное отношение (HABTM вместо того, имеет много) и, следовательно, неправильно таблицу (article_users вместо статей)

я мог бы написать мой собственным сохранить запрос с нужными таблицами (I» я пробовал это и его работы), но я думаю, что это не лучшее решение.

действительно ли кто-то знает лучший подход? благодаря!

Edit:

Статья Модель

Ownes:

public $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ) 
    ); 

Симпатии:

public $hasAndBelongsToMany = array('User' => array( 
      'className' => 'User', 
      'joinTable' => 'articles_users', 
      'foreignKey' => 'article_id', 
      'associationForeignKey' => 'user_id', 
      'unique' => 'keepExisting', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'finderQuery' => '', 
      'deleteQuery' => '', 
      'insertQuery' => '' 
     ) 
    ); 

пользователя Модель

public $hasMany = array(
    'Article' => array(
     'className' => 'Article', 
     'foreignKey' => 'user_id', 
     'dependent' => false, 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'limit' => '', 
     'offset' => '', 
     'exclusive' => '', 
     'finderQuery' => '', 
     'counterQuery' => '' 
    ) 
); 

    public $hasAndBelongsToMany = array(
    'Article' => array(
     'className' => 'Article', 
     'joinTable' => 'articles_users', 
     'foreignKey' => 'user_id', 
     'associationForeignKey' => 'article_id', 
     'unique' => 'keepExisting', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'limit' => '', 
     'offset' => '', 
     'finderQuery' => '', 
     'deleteQuery' => '', 
     'insertQuery' => '' 
    )); 
+1

Поделитесь соответствующим кодом модели ($ hasMany, $ belongsTo, HABTM) для моделей пользователей и товаров – AgRizzo

ответ

0

В модели пользователя, имена ваших отношений/псевдонимы одинаковы: Статья. Сделайте их разными. По documentation: Однако псевдонимы для каждой модели должны быть уникальными в приложении.

+0

oh man so simple ... спасибо! – tobysas

Смежные вопросы