我有几个模型,一个是通知,一个是严重性。通知具有严重性。
我的数据库中的通知表(简化)如下
id => int
message => text
severity_id => int
我的严重性表包含以下列
id => int
name => varchar(20)
在我的通知模型中,我有以下关系
protected $_has_one = array(
'severity' => array(
'model' => 'NotificationSeverity',
'foreign_key' => 'id' )
);
我不知道如何告诉它使用严重性_id 作为关系的这一面。
我希望能够直接从通知对象访问严重性,即 $notification->severity->name 等。
我还尝试通过在该关系的另一端设置 has_many 关系,如下所示,以便我可以访问具有特定优先级的所有通知的列表。
protected $_has_many = array(
'notifications' => array( 'model' => 'Notification',
'foreign_key' => 'severity_id' )
);
我做错了什么?
编辑:如果需要,我可以更改数据库和/或代码。
最佳答案
您需要在关系的两侧使用相同的foreign_key
。此外,has_many 需要相应的部分belongs_to。
has_many 的意思是“拥有”,就像 has_one 一样,而 own_to 的意思是“被拥有”。因此,您不能让一个网站拥有另一个网站,而另一个网站也拥有另一个网站(除非您有 has_many_through)。这意味着当一侧 has_one/has_many 模型时,对应的一侧需要属于。
通知
$_belongs_to = array(
'severity' => array(
'model' => 'NotificationSeverity',
'foreign_key' => 'severity_id',
)
);
通知严重性
$_has_many = array(
'notifications' => array(
'model' => 'Notification',
'foreign_key' => 'severity_id',
)
);
关于php - ORM 关系(可能是 Kohana 特定的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16388493/