2013-09-16 1 views
1

Может кто-нибудь объяснить, как получить первый запрос, чтобы вернуть те же результаты, что и второй запрос? Первый запрос возвращает 1 вместо 0 для любого столбца с числом 0. Второй запрос работает нормально. Я уверен, что это проблема с оператором COUNT().выражение Kohana DB не возвращает правильные результаты

$lists = DB::select('favorites_lists.*', array(DB::expr('COUNT("favorites.list_id")'), 'total_favs')) 
    ->from('favorites_lists') 
    ->join('favorites', 'LEFT') 
    ->on('favorites_lists.id', '=', 'favorites.list_id') 
    ->where('favorites_lists.uid', '=', $user->id) 
    ->group_by('favorites_lists.id') 
    ->execute() 
    ->as_array(); 

$lists = DB::query(
    Database::SELECT, 
    'SELECT favorites_lists.*, COUNT(favorites.list_id) as total_favs 
    FROM favorites_lists 
    LEFT JOIN favorites 
    ON favorites_lists.id = favorites.list_id 
    WHERE favorites_lists.uid = ' . $user->id . ' 
    GROUP BY favorites_lists.id' 
) 
    ->execute() 
    ->as_array(); 

ответ

2
DB::select('favorites_lists.*', array(DB::expr('COUNT("favorites.list_id")'), 'total_favs')) 

что использование этого массива? Обычно я пишу запрос следующим образом.

DB::select('favorites_lists.*',DB::expr('COUNT("favorites.list_id") AS total_favs')) 
+1

Это то, что показали образцы Kohana в их примере. Я раскоментировал свой оригинальный код, и теперь он работает. Я понятия не имею, что изменилось, но до того, как вся моя отладка показала, что из базы данных поступает неправильный результат, я понятия не имею. Ваше выражение тоже прекрасно работает, поэтому я продолжу и отвечу на ваш ответ. Если что-нибудь это сообщение поможет людям, пытающимся пройти через неполную и запутанную документацию Коханы :) Одна вещь, однако, в конце вам нужны дополнительные круглые скобки. – Gavin

 Смежные вопросы

  • Нет связанных вопросов^_^