Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

SQL to ORM
http://forum.kohanaframework.su/viewtopic.php?f=33&t=708
Страница 1 из 1

Автор:  Manyahin [ 30 июл 2013, 13:14 ]
Заголовок сообщения:  SQL to ORM

Здравствуйте, помогите преобразовать запрос из SQL в ORM.
Суть запроса: Вытащить зарегистрировавшихся пользователей за последнюю неделю, у которых не было ни одной транзакций. Т.е. у которых количество транзакций 0.
Связи в моделях настроены, Model_User has many Model_Transactions
В SQL это запрос выглядит так:
Код:
SELECT `users`.`id`, `transactions`.`id` FROM `users` 
LEFT JOIN `transactions`
ON `users`.`id` = `transactions`.`user_id`
WHERE `data_registration` > NOW() - INTERVAL 1 WEEK
AND `transactions`.`id` IS NULL

В правильности SQL запроса я тоже не уверен, но он работает :roll:
Помогите преобразовать этот запрос на ORM.

$inactive_users = ORM::factory('user')->where( *COUNT TRANSACTIONS IS 0* )->where( *REGISTRATION ONE WEEK AGO* )

Автор:  Manyahin [ 30 июл 2013, 14:12 ]
Заголовок сообщения:  Re: SQL to ORM

Сделал так
Код:
$users = ORM::factory('user')
         ->where('data_registration','>',DB::expr('NOW() - INTERVAL 4 WEEK'))
         ->find_all();
      
      foreach ($users as $user) {
         if($user->transactions->count_all() == 0)
            $inactive_users[] = $user->id;
      }


Вопрос, можно это сделать одним запросом?

Автор:  WinterSilence [ 30 июл 2013, 15:16 ]
Заголовок сообщения:  Re: SQL to ORM

http://kohana/guide-api/ORM#join + http://kohana/guide-api/ORM#and_where

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/