0

我有几个模型,一个是通知,一个是严重性。通知具有严重性。

我的数据库中的通知表(简化)如下

id => int
message => text
severity_id => int

我的严重性表具有以下列

id => int
name => varchar(20)

在我的通知模型中,我有以下关系

protected $_has_one = array(
    'severity' => array(
        'model' => 'NotificationSeverity',
        'foreign_key' => 'id' )
);

我不知道如何告诉它使用severity_id 作为关系的这一面。

我希望能够直接从通知对象访问严重性,即 $notification->severity->name 等。

我还尝试在该关系的另一端设置一个 has_many 关系,如下所示,以便我可以访问具有特定优先级的所有通知的列表。

protected $_has_many = array(
    'notifications' => array( 'model'  =>  'Notification', 
    'foreign_key' => 'severity_id' )
);

我究竟做错了什么?

编辑:如果需要,我可以更改数据库和/或代码。

4

1 回答 1

1

您需要foreign_key在关系的两侧使用相同的。has_many也需要对应的部分是belongs_to

has_many 意味着“拥有”,就像 has_one 一样,而 belongs_to 意味着“被拥有”。因此,您不能让一个站点拥有另一个站点,但另一个站点也拥有一个站点(除非您拥有has_many_through)。这意味着当一侧 has_one/has_many 模型时,对应的一侧需要属于(s)_to。

通知

$_belongs_to = array(
    'severity' => array(
        'model' => 'NotificationSeverity',
        'foreign_key' => 'severity_id',
    )
);

通知严重性

$_has_many = array(
    'notifications' => array(
        'model' => 'Notification',
        'foreign_key' => 'severity_id',
    )
);
于 2013-05-05T20:07:24.120 回答