Kohana ORM. Используем выражения

kohanaЯ долго не мог понять, чего мне не хватает в штатном ORM от Kohana. А не хватало именно возможности использования выражений.

Бывало напишешь по-наивности какое-нибудь выражение прямо в where. Например, так:

where('concat(first_name," ",last_name)',"like","%$searchstring%")...

А потом получаешь ошибку, что нет такого поля 'concat(first_name," ",last_name)'

И вот однажды я в недрах интернетов нашёл решение, которое конечно же решил положить в мою копилку шпаргалок. Всё дело в использовании функции DB::expr. Вот например так:

$searchresult=ORM::factory("user")->
  where(   DB::expr('concat(first_name," ",last_name)'),
                           "like","%$searchstring%")->
  order_by("id","desc")->
  limit($data['per_page'])->
  offset($data['offset'])->
  find_all();

Воистину, ORM может всё, только нужно знать все его трещинки.

Kohana ORM. Используем выражения: 4 комментария

  1. nex2hex

    Это относится не к ORM, а к QueryBuilder и находится в соответствующих разделах гайда.

  2. altesack Автор записи

    @ nуч2hex:
    Во-во!Наверное именно поэтому я не сразу нашёл эту фишку.

  3. schamane

    kohana 3.0

    $groupsmembercount = ORM::factory(‘groupsusersmember’)
    ->select(array(‘groupsusersmembers.groupsuser_id’, ‘groupsuser_id’), array(‘COUNT(«*»)’, ‘count’) )
    ->where(‘groupsuser_id’, ‘in’, $groups )
    ->group_by(‘groupsuser_id’)
    ->find_all()
    ->as_array(‘groupsuser_id’,’count’ );

    усьо работает
    ізучаєм мани

  4. schamane

    або он так

    $actionsexists = ORM::factory(‘grantscontroller’)
    ->select(array(‘grantsactions.id’, ‘i’),array(‘CONCAT(«grantscontrollers.name»,\’ \’, «grantsactions.action»)’, ‘new_name’) )

    сорі версія
    3.1 коханої
    і в попередньому пості теж )) 3.1

Комментарии запрещены.