我有几个型号,一个是通知,一个是严重性。通知具有严重性。
我的数据库中的My Notifications表(简化)如下
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' )
);
我做错了什么?
编辑:如果需要,我可以更改数据库和/或代码。
答案 0 :(得分:1)
您需要在关系的两侧使用相同的foreign_key
。 has_many 还需要相应的部分 belongs_to 。
has_many表示“ownage”,就像has_one一样,而belongs_to表示“被拥有”。因此,您不能让一个站点拥有另一个站点,但另一个站点也拥有该站点(除非您有 has_many_through )。这意味着当一方有has_one / has_many模型时,相应的一方需要属于_to。
通知
$_belongs_to = array(
'severity' => array(
'model' => 'NotificationSeverity',
'foreign_key' => 'severity_id',
)
);
NotificationSeverity
$_has_many = array(
'notifications' => array(
'model' => 'Notification',
'foreign_key' => 'severity_id',
)
);