2014-04-24 4 views
0

Я использую Kohana 3.3 и пытаюсь установить отношения на своих таблицах ORM, используя has_many и belongs_to. У меня есть users таблицу, которая определяется, как показано нижеKohana - has_many и принадлежит_to не работает должным образом

enter image description here

У меня есть еще одна таблица userjobs определена, как показано ниже. userjobs имеют внешний ключ, ссылающийся на user_id от пользователей.

enter image description here

В классе Model_User (extends Model_Auth_User), я определил отношения как

protected $_has_many = array(
    'user_tokens' => array('model' => 'user_token'), 
    'roles' => array('model' => 'role', 'through'=> 'roles_users'), 
    'jobs' => array('model' => 'Userjob','foreign_key' => 'user_id'), 
); 

и в классе Model_Userjob (extends ORM), следующее заявление написано

protected $_belongs_to = array(
    'user' => array('model' => 'user') 
); 

Однако, когда я пытаюсь получить доступ к следующим работам, это бросает исключение, которое говорит, что jobs не определенно в Model_User

Auth::instance()->get_user()->jobs; 

Я попытался сбрасывали значения get_user() он не показывает работу в protected $_has_many массиве.

Я даже попытался удалить user_tokens и roles из $_has_many, но до сих пор has_many массив все еще держит запись для ролей и user_tokens когда -i распечатаны значения get_user.

enter image description here

+0

Какой драйвер db вы используете? Вы уверены, что ваш конкретный «Model_User» фактически используется, а не по умолчанию? – kero

+0

'driver' => 'ORM' определен в Auth.php. Это необходимая информация? – logeeks

+0

@kingkero, скажите, пожалуйста, как я могу это проверить. извините, я полный новичок на сцене коханы. – logeeks

ответ

0

Я не уверен, но я думаю, что вы должны установить отношения в модели пользователя, как это:

protected $_has_many = array(
    'user_tokens' => array('model' => 'user_token'), 
    'roles' => array('model' => 'role', 'through'=> 'roles_users') 
); 
protected $_belongs_to = array(
    'jobs' => array('model' => 'userjob','foreign_key' => 'user_id') 
); 

и работы модели:

protected $_has_one = array(
    'user' => array('model' => 'userjob', 'foreign_key' => 'user_id') 
); 
+0

Можете ли вы уточнить? Насколько я могу судить, у пользователя должно быть много заданий;) – kero

+0

Можете ли вы направить меня на рабочий пример, демонстрирующий использование has_many, если что-либо доступно в Интернете? – logeeks

+0

Я только что проверил код и обнаружил, что существует $ _has_many в базовом классе Model_Auth_User, которые имеют отношения для user_tokens и ролей. Я считаю, что переменные используются, а переменные в моем классе игнорируются. какие-нибудь подсказки, что может быть причиной этого? – logeeks

0

Вам нужно add '-> find_all()' в конце этой строки. В противном случае задания будут рассматриваться как col.

Auth::instance()->get_user()->jobs->find_all(); 
Смежные вопросы