我有三张桌子。
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
答案 0 :(得分:-1)
用户和组类中的refclass
选项很可能是UserGroup而不是UserGroups(Doctrine不理解单数和复数之间的区别)。您还应该在您声明的每个setup()方法中调用parent :: setUp()方法。
the official manual中有很多关于许多关系的文档。 (以用户组关系为例)
编辑:
我再次注意到代码时发现了一些严重的问题:
UserGroup
表格中有article_id
列,但没有group_id
列。Group
模型名称Groupss
之间的关系,这使得关系$user->Group
未知。$user->Groups[] = $group