Я посетил несколько сайтов (включая этот), и, к сожалению, как новичок в Kohana, я до сих пор не могу заставить это работать. Отношение данных довольно простое, у меня есть запись компании, которая должна быть связана с 1 записью статуса и 1 записью типа. Конечно, в таблице будет несколько компаний, но каждая компания может быть привязана только к 1 из каждой (и должна быть).
Что у меня есть:
class Model_Company extends ORM
{
protected $_has_one = array(
'companystatus' => array('model' => 'companystatus', 'foreign_key' => 'entryid'),
'companytype' => array('model' => 'companytype', 'foreign_key' => 'entryid')
,
);
}
Статус компании Модель:
<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_CompanyStatus extends ORM
{
protected $_table_name = 'datadictionary';
protected $_primary_key = 'entryid';
protected $_has_many = array(
'company' => array('foreign_key' => 'statusid')
,
);
}
?>
Тип компании Модель:
<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_CompanyType extends ORM
{
protected $_table_name = 'datadictionary';
protected $_primary_key = 'entryid';
protected $_has_many = array(
'company' => array('foreign_key' => 'companytypeid')
,
);
}
?>
Модели companystatus и companytype отображаются в одну таблицу, которая имеет 2 поля, entryid и entryname. Эта таблица называется «datadictionary» и имеет соответствующие свойства, поэтому мне не нужно использовать «id» в качестве поля id записи.
Теперь я загружаю запись о своей компании так:
$company = ORM::factory('company')
->where('id', '=', 1)
->where('hasbeendeleted', '=', 0)
->find();
Проблема в том, что я ничего не возвращаю для свойств companystatus и companytype для компании, и когда я делаю $ company-> companystatus-> find (), я получаю первую возвращаемую запись, что странно. Чего мне не хватает?
Спасибо !!
: -)
Edit:
Для простоты таблица «Компании» имеет следующие поля:
ID (primary key) - auto inc int
CompanyName - varchar(255)
StatusID - int
CompanyTypeID - int
HasBeenDeleted - smallint (0 for false, 1 for true)
Таблица DataDictionary:
EntryID (primary key) - auto inc int
EntryName - nvarchar(255)
Пример записи о компании:
ID: 1
CompanyName: TestCompany
StatusID: 1
CompanyTypeID: 3
HasBeenDeleted: 0
Пример записей DataDictionary:
EntryID: 1
EntryName: Active
EntryID: 2
EntryName: Inactive
EntryID: 3
EntryName: Customer
EntryID: 4
EntryName: Supplier