Я долго не мог понять, чего мне не хватает в штатном ORM от Kohana. А не хватало именно возможности использования выражений.
Бывало напишешь по-наивности какое-нибудь выражение прямо в where. Например, так:
1
| where('concat(first_name," ",last_name)',"like","%$searchstring%")... |
А потом получаешь ошибку, что нет такого поля 'concat(first_name," ",last_name)'
И вот однажды я в недрах интернетов нашёл решение, которое конечно же решил положить в мою копилку шпаргалок. Всё дело в использовании функции DB::expr. Вот например так:
1
2
3
4
5
6
7
| $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 может всё, только нужно знать все его трещинки.