Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 29 мар 2024, 11:30

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: ORM модель
СообщениеДобавлено: 11 июл 2012, 00:32 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
Код:
class Model_User extends ORM {
 protected $_has_one = array(
 ‘passport’ => array(
 ‘model’ => ‘passport’,
 ‘foreign_key’ => ‘user_id’,
 ),
 );
 }

Для чего создавать пустую модель ‘model’ => ‘passport’ и вообще это прописовать, обьясните пожалуйста, интересно как это использовать и т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 11 июл 2012, 11:47 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Код:
 protected $_has_one = array(
 ‘passport’ => array(
 ‘model’ => ‘passport’,
 ‘foreign_key’ => ‘user_id’,
 ),
 );


Это определение связей. В данном случае мы определяем что модель user связна с моделью passport для связи, в модели passport, используется столбец user_id.

Когда мы инициализируем объект user
Код:
$user = ORM::factory('user',1);


у Вас происходит загрузка данных из таблицы user, с id = 1, и данных из таблицы passport с user_id = 1.

далее для работы с данными passport можно использовать примерно такой код
Код:
$user->passport->number = '123'


как-то так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 11 июл 2012, 11:57 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
mamahtehok писал(а):
Код:
 protected $_has_one = array(
 ‘passport’ => array(
 ‘model’ => ‘passport’,
 ‘foreign_key’ => ‘user_id’,
 ),
 );


Это определение связей. В данном случае мы определяем что модель user связна с моделью passport для связи, в модели passport, используется столбец user_id.

Когда мы инициализируем объект user
Код:
$user = ORM::factory('user',1);


у Вас происходит загрузка данных из таблицы user, с id = 1, и данных из таблицы passport с user_id = 1.

далее для работы с данными passport можно использовать примерно такой код
Код:
$user->passport->number = '123'


как-то так.

Это я понимаю =) Мне интересно зачем создавать модель Passport, в чем смысл, если она пустая ?или может быть там можно что нибудь еще прописывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 11 июл 2012, 13:12 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
ну из приведенного куска кода не следует что можель passport пустая...
а если это модель оанованая на orm т.е.
Код:
class Model_Passport extend ORM{}

не содержит кода в самой модели это не значит что модель пустая, это всего лишь значит, что нет предопределенний и дополнений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 11 июл 2012, 15:45 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
mamahtehok писал(а):
ну из приведенного куска кода не следует что можель passport пустая...
а если это модель оанованая на orm т.е.
Код:
class Model_Passport extend ORM{}

не содержит кода в самой модели это не значит что модель пустая, это всего лишь значит, что нет предопределенний и дополнений.

Код:
class Model_Passport extend ORM{}

для чего делать пустым ?или все же ее чем-то заполняют ?если да, то чем ?можно пример ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 11 июл 2012, 16:41 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Для того чтоб у Вас была модель по средствам которой вы работаете с таблицей passports.
расширить модель Вы можете методами которые вым нужны.
Например можете добавить что нибуть типа

Код:
//sn 10 значный номер паспорта где первые 4 символа серия остальное номер.
 public function get_serial()
{
$serial = substr($this->sn,0,4);
return $serial;
}

 public function get_number()
{
$number = substr($this->sn,5,6);
return $number;
}


Код:
//инициализируем объект паспорта
$pasport = ORM::factory('pasport',1)
//получаем номер пасорта
$passportNumber = $passport->number();

как-то так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 12 июл 2012, 12:43 
Не в сети
Бывалый

Зарегистрирован: 11 июл 2012, 00:30
Сообщения: 31
mamahtehok писал(а):
Для того чтоб у Вас была модель по средствам которой вы работаете с таблицей passports.
расширить модель Вы можете методами которые вым нужны.
Например можете добавить что нибуть типа

Код:
//sn 10 значный номер паспорта где первые 4 символа серия остальное номер.
 public function get_serial()
{
$serial = substr($this->sn,0,4);
return $serial;
}

 public function get_number()
{
$number = substr($this->sn,5,6);
return $number;
}


Код:
//инициализируем объект паспорта
$pasport = ORM::factory('pasport',1)
//получаем номер пасорта
$passportNumber = $passport->number();

как-то так.

Но мне не нужно работать с этой таблицей вообще, вот так напрямую. Поэтому и спрашиваю зачем ее создавать, да еще и пустую.'model'=>'passport' вот тут же прописали имя модели, понятно ведь какую таблицу использовать, так нет, нужно создавать пустую модель не понятно зачем(она то пустая и смысла поэтому не вижу).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 12 июл 2012, 14:45 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Цитата:
Но мне не нужно работать с этой таблицей вообще, вот так напрямую. Поэтому и спрашиваю зачем ее создавать, да еще и пустую.


не нужно - не работайте. просто удалите эту строку.

Цитата:
'model'=>'passport' вот тут же прописали имя модели, понятно ведь какую таблицу использовать, так нет, нужно создавать пустую модель не понятно зачем(она то пустая и смысла поэтому не вижу).


Таблица это не модель, а тут прописано имя модели, если у вас нет модели то работать будет не с чем. Автосзодание моделей в фреймфорке не предусмотрено, если Вам так этого не хватает можете дописать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM модель
СообщениеДобавлено: 12 июл 2012, 19:35 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
Поэтому и спрашиваю зачем ее создавать, да еще и пустую.
Тут же написано
Код:
class Model_Passport extend ORM{}
Т.е. вы создаете класс Model_Passport, который наследует класс ORM, а он, если посмотреть, совсем не пустой)
В строке ‘model’ => ‘passport’ вы указываете какой класс (т.е. модель) использовать. Если ее нет, как ее использовать?

ORM - Object Relational Mapping - технология преобразования объектов в реляционные модели БД. Т.е. вы не будете писать запросы на MySQL, а будете работать с базой как с обычным классом (его методами и свойствами) а всю "черновую" работу (составление запросов, связей, экранирование, выполнение) на низком уровне будет делать класс ORM.
Поэтому, чтобы работать с базой как с объектом, здесь нужно сделать class Model_User extends ORM и ваш класс User будет знать все методы, свойства ORM для работы с базой его методами. И если в нем указана связь с другой моделью ‘model’ => ‘passport’ - ее тоже нужно создать. И как выше отметил mamahtehok "Таблица это не модель, а тут прописано имя модели."
Типа того)

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group