Кохана: я должен создать модели для каждой таблицы, которую я имею для использования с ORM? - PullRequest
2 голосов
/ 13 марта 2012

Я новичок в рамках Kohana. Я пытаюсь использовать модуль ORM в Кохане. У меня сложилось впечатление, что я должен создать модель для каждого стола, который у меня есть. Только тогда я мог получить доступ к таблицам через эти модули. Это правильно? Кто-нибудь может объяснить лучшие практики создания моделей для доступа к базе данных с использованием ORM в Кохане?

Заранее спасибо Poomalairaj

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Когда мы говорим о Kohana и ORM, да, вам в значительной степени нужно то, что мы называем сущностью, или модель, которая будет представлять эту таблицу. Это наиболее распространенный и рекомендуемый способ указания домена.

Помните, что концепция модели в Kohana не соответствует общей концепции там. У вас может быть модель, похожая на сущность бизнес-логики, которая не имеет ничего общего с базой данных.

Чтобы проиллюстрировать мой ответ, если бы у вас было простое почтовое приложение, такое как твиттер или что-то еще, у вас было бы что-то вроде этого:

class Model_User extends ORM {
    protected $_table_name = 'user';

    protected $_primary_key = 'id';

    protected $_has_many = array('posts' => array());
}

class Model_Post extends ORM {
    protected $_table_name = 'post';

    protected $_primary_key = 'id';

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

ORM Kohana также поймет, если вы создадите свои модели следующим образом:

class Model_User extends ORM {
    protected $_has_many = array('posts' => array());
}

class Model_Post extends ORM {
    protected $_belongs_to = array('user' => array());
}

Так как он работает в основном с соглашениями над конфигурациями.

С указанным доменом вы можете получить доступ к сообщениям некоторых пользователей, например:

$user->posts

И пользователь поста (автор), как это:

$post->user

Надеюсь, что это может прояснить ваш разум!

2 голосов
/ 15 марта 2012

Вам не нужно добавлять

protected $_primary_key = 'id';

для каждой модели, которую вы добавляете, это ключ по умолчанию, но если ваш ключ отличается от 'id', вы должны добавить строку, указав правильнуюключ, такой как "userId".

...