2011-08-02 4 views
1

У меня есть три таблицы.codeigniter doctrine many to many relationship

User 
    id 
Group 
    id 
UserGroup 
    user_id 
    article_id 
    date_joined 

Теперь у меня есть три отдельных модели для установления отношений.

// Пользовательская модель

<?php 
class User extends Doctrine_Record 
{ 
    // define table columns in this function 
    public function setTableDefinition() { 

    } 

    // setup some options 
    public function setUp() { 

     $this->hasMany('Group as Groupss', array(
       'local' => 'user_id', 
       'foreign' => 'group_id', 
       'refClass' => 'UserGroup' 
     )); 

     // causes 'created_at' and 'updated_at' fields to be updated automatically 
    $this->actAs('Timestampable'); 
    } 
} 

// Группа Модель

<?php 

class Group extends Doctrine_Record 
{ 
    // define table columns in this function 
    public function setTableDefinition() { 

    } 
     $this->hasMany('User as Users', array(
       'local' => 'group_id', 
       'foreign' => 'user_id', 
       'refClass' => 'UserGroup' 
     ));  

    } 
} 

// USERGROUPS

<?php 

class UserGroup extends Doctrine_Record 
{ 
    public function setTableDefinition() 
    { 
     $this->hasColumn('user_id', 'integer', 4, array(
       'primary' => true 
      ) 
     ); 

     $this->hasColumn('achievement_id', 'integer', 4, array(
       'primary' => true 
      ) 
     ); 
     $this->hasColumn('date_completed', 'timestamp', 25); 
    } 
} 

и теперь все, что я хочу сделать, это построить отношения внутри моего контроллера :

$user  =  Doctrine::getTable('User')->findOneByEmail('[email protected]'); 
    $group =  Doctrine::getTable('Group')->findOneByID('1'); 

    $user->Group = $user; 

Оба SQL команды возвращаются к одному результату, и когда я бегу контроллер я получаю следующее сообщение об ошибке:

Fatal error: Uncaught exception 'Doctrine_Record_UnknownPropertyException' with message 'Unknown record property/related component "User" on "Group"' in 

ответ

-1

refclass опция в пользовательском и Групповые занятия должны, скорее всего, быть UserGroup и не USERGROUPS (Учение Безразлично понять разницу между сингулярным и множественным числом). Вы также должны вызвать метод parent :: setUp() в каждом из методов setup(), которые вы объявляете.

Существует большое количество документации по многим отношениям в the official manual. (Который использует пользователь-группы отношение в качестве примера)

EDIT:

Я заметил, что некоторые серьезные проблемы с кодом, проходя через него снова:

  • Ваш UserGroup таблица имеет article_id столбец, но нет group_id.
  • Заявленное отношение к модели Group под названием Groupss, это делает отношение $user->Group неизвестен.
  • Наконец, вы должны назначить пользователю массив групп, как $user->Groups[] = $group
+0

плюрализация USERGROUPS был на самом деле опечатка на моем StackOverflow пост (и был обновлен). Руководство, которое вы отправили мне, было тем, за которым я следил, поэтому я не уверен, что получаю сообщение об ошибке. Я замечаю, что в учебнике они используют «class User extends BaseUser», возможно, это имеет к этому какое-то отношение? –

+0

Также стоит отметить, что я добавил столбец в свою реляционную таблицу (date_completed) –

+0

BaseUser - это класс, созданный Doctrine, который отражает всю информацию, содержащую конфигурацию YAML в данный момент времени. Это просто вопрос разделения кода, поэтому я не могу себе представить, что это будет источником проблемы. Не могли бы вы попытаться создать модели в другом каталоге из конфигурации YAML и посмотреть, какие различия существуют? – K4emic