codeigniter主义多对多的关系

时间:2011-08-02 21:21:49

标签: php codeigniter doctrine many-to-many

我有三张桌子。

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('abcd123@gmail.com');
    $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 个答案:

答案 0 :(得分:-1)

用户和组类中的refclass选项很可能是UserGroup而不是UserGroups(Doctrine不理解单数和复数之间的区别)。您还应该在您声明的每个setup()方法中调用parent :: setUp()方法。

the official manual中有很多关于许多关系的文档。 (以用户组关系为例)

编辑:

我再次注意到代码时发现了一些严重的问题:

  • 您的UserGroup表格中有article_id列,但没有group_id列。
  • 声明与Group模型名称Groupss之间的关系,这使得关系$user->Group未知。
  • 最后,您应该将用户分配到一组像$user->Groups[] = $group
  • 这样的组