我正在构建一个 Kohaha 应用程序来管理星号中的 sip 行。
我想使用 ORM,但我想知道如何关联已经建立的某些表。
例如,表 sip_lines 看起来像这样。
+--------------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| sip_name | varchar(80) | NO | UNI | NULL | |
| displayname | varchar(48) | NO | | NULL | |
| line_num | varchar(10) | NO | MUL | NULL | |
| model | varchar(12) | NO | MUL | NULL | |
| mac | varchar(16) | NO | MUL | NULL | |
| areacode | varchar(6) | NO | MUL | NULL | |
| per_line_astpp_acc | tinyint(1) | NO | | 0 | |
| play_warning | tinyint(1) | NO | | 0 | |
| callout_disabled | tinyint(1) | NO | | 0 | |
| notes | varchar(80) | NO | | NULL | |
| last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+--------------------+------------------+------+-----+-------------------+-----------------------------+
sip_buddies 是这样的:
+----------------+------------------------------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------------------+------+-----+-----------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(80) | NO | UNI | | |
| host | varchar(31) | NO | | | | | |
| lastms | int(11) | NO | | 0
*** snip ***
+----------------+------------------------------+------+-----+-----------+----------------+
这两个表实际上是相关的 sip_lines.sip_name = sip_buddies.name
我如何在 Kohana ORM 中关联它们,因为这不太对吗?
<?php defined('SYSPATH') or die('No direct script access.');
/* A model for all the account information */
class Sip_Line_Model extends ORM
{
protected $has_one = array("sip_buddies");
}
?>
编辑:实际上,可以公平地说这些表与外键没有正确关联!多哈。
编辑:看起来 Kohana ORM 不是那么灵活。ORM 可能不是要走的路,并且最适合可以更改数据模型的全新项目。原因是键名必须遵循特定的命名约定,否则它们在 Kohana 中不会相关。