php - ORM 关系(可能是 Kohana 特定的)

标签 php mysql orm kohana

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

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

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/

相关文章:

Java JPA ORM 映射

php - 迁移后测试数据(HTML -> PHP -> SQL)

php - 如何在 PHP 中找到特定索引后将数组分成两部分?

python - 使用 peewee 合并具有不同名称的字段

mysql - 连接同一个表的两行,这些行指向另一个表中的同一事物

mysql - 计算出现次数

java - 你更喜欢哪种 Java ORM,为什么?

php - Laravel 5.1 注册包中间件

php - 从 laravel 中的数据库或模型返回格式化时间

mysql - 避免使用 UNION 和 ORDER BY 的 mysql 查询中出现重复