Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

ORM модель
http://forum.kohanaframework.su/viewtopic.php?f=33&t=239
Страница 1 из 1

Автор:  poter [ 11 июл 2012, 00:32 ]
Заголовок сообщения:  ORM модель

Код:
class Model_User extends ORM {
 protected $_has_one = array(
 ‘passport’ => array(
 ‘model’ => ‘passport’,
 ‘foreign_key’ => ‘user_id’,
 ),
 );
 }

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

Автор:  mamahtehok [ 11 июл 2012, 11:47 ]
Заголовок сообщения:  Re: ORM модель

Код:
 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'


как-то так.

Автор:  poter [ 11 июл 2012, 11:57 ]
Заголовок сообщения:  Re: ORM модель

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, в чем смысл, если она пустая ?или может быть там можно что нибудь еще прописывать.

Автор:  mamahtehok [ 11 июл 2012, 13:12 ]
Заголовок сообщения:  Re: ORM модель

ну из приведенного куска кода не следует что можель passport пустая...
а если это модель оанованая на orm т.е.
Код:
class Model_Passport extend ORM{}

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

Автор:  poter [ 11 июл 2012, 15:45 ]
Заголовок сообщения:  Re: ORM модель

mamahtehok писал(а):
ну из приведенного куска кода не следует что можель passport пустая...
а если это модель оанованая на orm т.е.
Код:
class Model_Passport extend ORM{}

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

Код:
class Model_Passport extend ORM{}

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

Автор:  mamahtehok [ 11 июл 2012, 16:41 ]
Заголовок сообщения:  Re: ORM модель

Для того чтоб у Вас была модель по средствам которой вы работаете с таблицей 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();

как-то так.

Автор:  poter [ 12 июл 2012, 12:43 ]
Заголовок сообщения:  Re: ORM модель

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' вот тут же прописали имя модели, понятно ведь какую таблицу использовать, так нет, нужно создавать пустую модель не понятно зачем(она то пустая и смысла поэтому не вижу).

Автор:  mamahtehok [ 12 июл 2012, 14:45 ]
Заголовок сообщения:  Re: ORM модель

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


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

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


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

Автор:  AmberLEX [ 12 июл 2012, 19:35 ]
Заголовок сообщения:  Re: ORM модель

Цитата:
Поэтому и спрашиваю зачем ее создавать, да еще и пустую.
Тут же написано
Код:
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 "Таблица это не модель, а тут прописано имя модели."
Типа того)

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/