Я создаю приложение 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");
}
?>
РЕДАКТИРОВАТЬ: На самом деле, было бы справедливо сказать, что эти таблицы не связаны должным образом с внешними ключами! DOH.
РЕДАКТИРОВАТЬ: Похоже, что Kohana ORM не так гибок. ORM, вероятно, не тот путь, который лучше всего подходит для совершенно новых проектов, в которых модель данных может быть изменена. Причина в том, что имена ключей должны соответствовать определенному соглашению об именах, иначе они не будут связаны
в Кохане.