2013-12-11 73 views
0

尝试在两个表之间建立简单的多重关系。Codeigniter ORM无法建立关系

不幸的是笨口口声声说:

“无法找到您所指定的模式:eventtrigger”。

这里谈到的代码:

class Task extends DataMapper 
{ 
    public $has_one = array('employee', 
          'eventtrigger' => array('class' => 'employee')); 

    […] 
} 

我知道,这是很少的信息。

但我希望有一个关于这个构造的已知问题。

关注:maak

+0

它正是它所说的,Codeigniter无法找到指定模型的事件触发器。确保你已经创建了一个标题为“Eventtrigger”(带有大写字母E)的模型,并将其保存在模型文件夹中。 – bmorenate

+0

不,这不是我想要的。我想将员工模型作为事件触发器,因为我在这些模型之间有多个关系。在文档[这里](http://datamapper.wanwizard.eu/pages/advancedrelations.html)中描述了这种方式,但是我看不到我的错误 –

+0

嗯...我会说datapartper的东西是废料,它看起来很像过时而没有积极支持。 CI与DB一起工作的活跃记录类非常简单。 – bmorenate

回答

0

您还需要定义关系的other_field属性,你还需要定义在Employee模型的反向关系:

class Task extends DataMapper 
{ 
    public $has_one = array(
     'owner' => array(
      'class' => 'employee', 
      'other_field' => 'owned_task' 
     ), 
     'trigger' => array(
      'class' => 'employee', 
      'other_field' => 'triggered_task' 
     ) 
    ); 
} 

而且在员工型号:

class Employee extends DataMapper { 
    $has_many = array(
     'owned_task' => array(
      'class' => 'task', 
      'other_field' => 'owner' 
     ), 
     'triggered_task' => array(
      'class' => 'post', 
      'other_field' => 'trigger' 
     ) 
    ); 
} 

更多关于此的信息:http://datamapper.wanwizard.eu/pages/advancedrelations.html

不幸的是,正如@bmorenate提到的,DataMapper没有被主动支持了。