Моделі YII 1.x

Sep 04, 2013 11:31

Файли моделей розташовані за адресою ..\protected\models. Модель представляє собою клас. Клас моделі, по аналогії з класом контролера, іменується так само, як і називається файл. Тобто, якщо у нас є файл моделі з назвою LoginForm.php, то сам клас буде іменуватись class LoginForm extends CFormModel

Клас моделі, як і клас контролера обов'язково повинен розширяти один з системних класів CFormModel чи CActiveRecord (назва системних класів в YII завжди починається з великої латинської літери C).
В класі моделі є ряд важливих функцій, розберемо їх по порядку. Для розгляду використаємо клас, унаслідуваний від CActiveRecord, що дозволяє нам за допомогою цього працювати з БД.

public static function model($className=__CLASS__)
{
return parent::model($className);
}
Ця функція дозволяє нам звертатись до об'єкта моделі в контексті класу (кльово звучить, пра))) ми будемо використовувати її в подальшому для роботи з БД.

public function tableName()
{
return 'repairoblad';
}
Ця функція повертає назву таблиці. Вона також дозволяє використовувати префікси таблиць у роботі з БД. Якби наш додаток використовував префікси таблиць, то ця функція виглядала б майже так само. Тільки повертала б такий рядок: return '{{repairoblad}}';

public function rules()
{
}
Ця функція описує правила валідації. Поля таблиці в БД, перед записом в цю таблицю можуть пройти ряд перевірок. Всі критерії відповідності полів можуть бути задані в даній функції.

public function relations()
{
}
В даній функції вказуються зв'язки між таблицями. Це відноситься до ORM і буде розглянуте пізніше.

public function attributeLabels()
{
return array(
'id_oblad' => 'ЛРЗ',
'nazva' => 'Назва',
'model' => 'Модель',
'sn' => 'Серійний',
'sale_date'=>'Дата продажу',
'zayavka.repairCenter.name'=>'Рем.центр',
);
}
В даній функції ми задаємо назви полів. Назви полів будуть відображені у вюшках в віджетах. Розберемо це на практиці далі.

public function search()
{
}
Ця функція також буде використовувати у віджетах, для спрощення і прискорення роботи.

Для того щоб створити новий запис в таблиці, нам потрібно в контролері створити новий екземпляр класу моделі, заповнити його значеннями і викликати функцію збереження.
Ось як це відбувається в коді:

public function actionGetted()
{
//добавити запис в таблицю ZAYAVKI
$zayavka=new Zayavki;//створити новий екземпляр класу моделі
//заповнити його значеннями....
$zayavka->id_oblad=$oblad->id_oblad;
$zayavka->id_status=4;
$zayavka->id_center=0;
$zayavka->is_active=1;
$zayavka->save();//і викликати функцію збереження
}
Слід також сказати, що можна примусово відключати валідацію при збереженні даних:
$zayavka->save(false);//збереження без валідації

mvc, model, php, yii

Previous post Next post
Up