我有一个应用程序需要:
用户拥有许多项目。项目有一个所有者。
用户从事许多项目。项目有很多用户。
所以我有 3 个表,用户,projects_users,项目。关系是:
一个用户(所有者)---许多项目(created_by)
许多用户(id)----通过projects_users(user_id,project_id)----许多项目(id)。
在 Codeigniter 中,我在数据映射器模型中设置了以下关系:
Class Project extends DataMapper {
var $has_one = array(
'created_by' => array(
'class' => 'user',
'other_field' => 'owns'
)
);
var $has_many = array('user' => array(
'class' => 'user',
'other_field' => 'project',
'join_table' => 'projects_users'));
和...
class User extends DataMapper {
var $has_many = array(
'project' => array(
'class' => 'project',
'other_field' => 'user',
'join_table' => 'projects_users'
),
'owns' => array(
'class' => 'project',
'other_field' => 'created_by'
)
);
然而,这似乎不起作用,我得到一个递归错误。在 datamapper 中表示这种关系的正确方法是什么?