アスタリスクで sip ラインを管理する Kohaha アプリケーションを構築しています。
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 ***
+----------------+------------------------------+------+-----+-----------+----------------+
2 つのテーブルは、実際には 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 で関連付けられません。