четверг, 8 ноября 2012 г.

Kohana 3: небольшая оптимизация ORM

ORM в Kohana очень удобная штука, но она постоянно выполняет запросы типа:

SHOW FULL COLUMNS FROM `users`

Запрос выполняется почти на каждое действие связанное с таблицей, в данном случае 'users'. Это происходит из-за того, что для выполнения различных операций с данными ORM необходимо знать структуру таблицы и наименование полей.

Что бы избавиться от таких запросов необходимо добавить модель описание структуры таблицы - массив $_table_columns. Думаю детально описывать стурктуру массива с данными не имеет смысла, так как в ниже приведённом примере всё хорошо понятно.

Например для модели User, расширим стандартную модель Model_Auth_User добавив описание столбцов таблицы:

<?php
defined('SYSPATH') OR die('No direct script access.');

class Model_User extends Model_Auth_User {

     protected $_table_columns     = array(
          'id' => array(
               'data_type'   => 'int',
               'is_nullable' => FALSE
          ),
          'email' => array(
               'data_type'   => 'string',
               'is_nullable' => FALSE
          ),
          'username' => array(
               'data_type'   => 'string',
               'is_nullable' => FALSE
          ),
          'password' => array(
               'data_type'   => 'string',
               'is_nullable' => FALSE
          ),
          'logins' => array(
               'data_type'   => 'int',
               'is_nullable' => TRUE
          ),
          'last_login' => array(
               'data_type'   => 'int',
               'is_nullable' => TRUE
          ));
}

Больше запросов SHOW FULL COLUMNS FROM `users` не будет, так как модель 'знает' поля таблицы и их свойства.

Похожие по тематике посты:

Комментариев нет: