Java, Groovy on Grails, PHP, Kohana

Блог о программировании на Java, Groovy on Grails, PHP, kohana

Currently Viewing Posts in SQL

Использование ORM в kohana 3.2

Как и у большинства фреймворков, у kohana есть модуль для работы с базой данных на основе объектов – ORM. Полезность и удобство этого модуля сейчас никто не ставит под сомнение. Многие задачи программирования решаются с помощью ORM. ORM это не только удобство, но и универсальность кода, другими словами: любому программисту использующему ORM будет достаточно просто понять код другого разработчика.

Основные методы и приемы использования ORM.

  • Получение данных из таблицы
    //получаем все записи из таблицы "users".
    $users = ORM::factory('user')
    ->find_all(); 
    
    //получаем все записи из таблицы "users"
    //с условием-фильтром по слову "victor" в поле "name".
    $users = ORM::factory('user')
    ->where('name', 'LIKE', "%victor%")->find_all();
    
    //получаем одну запись со значением поля "name"="victor".
    $user = ORM::factory('user')
    ->where('name', '=', "victor")->find();
    еще вариант:
    $user = ORM::factory('user', $user_id); 
    что соответствует такому варианту синтаксиса
    $user = ORM::factory('user')->where('id', '=', $user_id)->find();

    Continue reading “Использование ORM в kohana 3.2”

Использование функций SQL в Query Builder и ORM фреймворка Kohana

Иногда возникает необходимость воспользоваться функцией SQL в Query Builder или в ORM, это можно сделать при помощи:
$users = ORM::factory('user')->where(DB::expr('LOWER(`name`)), 'like', "%$searchdata%")->find_all();
Т.е. в данном примере мы средствами SQL переводим данные из поля name таблицы users в нижний регистр и производим по ним поиск.

Инвертирование значения поля при помощи связки SQL UPDATE IF

Часто в таблицах мы храним данные в виде bool значений, например, флаг наличия товаров магазине.
Таблица products:

id name price instock
1 Ботинки 100 1
2 Сапоги 200 1
3 Тапочки 50 0

где instock – флаг наличия товара на складе, 0 – нет товара, 1 – есть.
Из админ панели магазина мы меняем состояние наличия того или иного товара на складе, например, нажатием кнопки “В наличии”.
В нашем скрипте мы выполняем следующий запрос к БД:

UPDATE `products` SET `instock` = IF (`instock` = 0, 1, 0)

таким образом при значении в поле равном “0” мы устанавливаем значение поля равное “1” и наоборот, при равном “1” устанавливаем – “0”.

  • Recent Posts