별표로 한 모금 줄을 관리하는 Kohaha 응용 프로그램을 작성하고 있습니다.Kohana ORM에서 다른 외래 키 이름이있는 테이블을 어떻게 관련 시키나요?
저는 ORM을 사용하고 싶지만 이미 잘 정립 된 특정 테이블을 어떻게 연관 지 생각해 봅니다.
테이블 sip_lines는 다음과 같습니다. 이되지 않을 것 같은
두 개의 테이블이 실제로 sip_lines.sip_name = sip_buddies.name으로 관련
+----------------+------------------------------+------+-----+-----------+----------------+
| 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 ***
+----------------+------------------------------+------+-----+-----------+----------------+
가 어떻게 Kohana ORM에서 그들을 관련이 있는가 :
+--------------------+------------------+------+-----+-------------------+-----------------------------+
| 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이있다 아주 옳은가?
<?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.
EDIT : Kohana ORM처럼 유연하지 않습니다. ORM은 아마도 데이터 모델이 변경 될 수있는 완전히 새로운 프로젝트에 가장 적합하게 작동하는 방법이 아닙니다. 특정 이름 지정 규칙을 따라야하는 이유는 Kohana에 과 관련이 없기 때문입니다.
만약 이것이 새로운 프로젝트이고 이런 식으로 할 필요가 없다면; DB 스키마를 조정하는 것을 고려해야합니다. 이름 대신 ID를 사용하여 다른 테이블의 데이터를 연결하는 것이 좋습니다. – Seth
기존 데이터베이스 위에 새로운 프로젝트가 추가되었습니다. 따라서 필드 이름을 정확하게 변경할 수있는 권한이 없습니다. – Matt