【发布时间】:2010-01-28 23:15:52
【问题描述】:
我正在构建一个 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 可能不是要走的路,并且最适合可以更改数据模型的全新项目。原因是键名必须遵循特定的命名约定,否则它们将不相关 在科哈纳。
【问题讨论】:
-
如果这是一个新项目,不必这样做;您应该考虑对您的数据库架构进行调整。最好使用 ID 而不是名称来关联来自不同表的数据。
-
这是一个基于现有数据库的新项目。所以我无法准确更改字段名称。
标签: php kohana kohana-orm