Intereting Posts
Laravel 5.2 – Метатагский канонический url Получение местоположения с IP-адреса Может ли кто-нибудь подтвердить, что phpMyAdmin AllowNoPassword работает с базами данных MySQL? Массив PHP для массива postgres Лучший способ разработки / управления / разработки повторяющихся задач / календаря отправка данных таблицы html в таблицу mysql Задайте значение переменной в одной функции и используйте в других функциях при вызове непосредственно из ссылки в codeigniter Как предоставить PHP доступ на запись в каталог? Неустранимая ошибка: Не удалось OAuthException – Неавторизованный IP-адрес источника Новая строка в PHP CLI Как ограничить, какие страны могут просматривать мой сайт (PHP) Помощь htaccess в совместном использовании Codeigniter и WordPress Реализация PHP-чата на сайте участников Как отступить к совершенно другой странице индекса, если пользователь отключил javascript? Определите, является ли 10-значная строка действительной. Amazon ASIN

Kohana ORM: Проверить связь $ _belongs_to

Я пытаюсь получить некоторые настройки проверки для одной из моих моделей ORM.

У меня есть 2 таблицы: родитель и дети. В таблице children есть столбец с именем «parent», значение которого является основным идентификатором строки в родительской таблице.

То, что я пытаюсь сделать, – создать правило проверки, которое проверяет, что указанный родительский идентификатор действительно существует в родительской таблице.

Есть простой способ сделать это?

Ну, я придумал одно решение. Я создал статический метод в классе Model, который принимает идентификатор в качестве параметра и просто проверяет, существует ли строка.

Таким образом, моя Model_Child имеет такую ​​же функцию:

public function rules() { return array( 'parent' => array( // will call Model_Parent::exists($value) array(array('Model_Parent', 'exists')) ) ); } 

Тогда мой Model_Parent имеет следующее:

 public static function exists($id) { $results = DB::select('*')->from('parent')->where('id', '=', $id)->execute()->as_array(); if(count($results) == 0) return FALSE; else return TRUE; } 

Это работает для меня. Есть ли более элегантное или правильное решение?

В MySQL (поскольку этот вопрос отмечен как mysql), вы определяете отношение внешнего ключа между родительской и дочерней таблицами и оставляете эту проблему в системе.