Почему запросы deos не выдают результат, однако есть строки?

#php #mysql #laravel #laravel-5

#php #mysql #laravel #laravel-5

Вопрос:

Я пытаюсь извлечь записи из двух таблиц.

1 — токены 2 — транзакции

В обеих таблицах есть один и тот же столбец, user_id и tokens таблица имеет transaction_id . Я пытаюсь получить все транзакции, которые имеют отношение к token . Я пытаюсь выполнить следующее

 $EarnedData = Token::whereIn('user_id', $descendants)
    ->whereHas('transaction', function($q){
            $q->where('custom', '!=', 'BB')->orWhereNull('custom');
    })->sum('amount');
  

После отладки я получил необработанный запрос из приведенного выше скрипта, который выглядит следующим образом

     select sum(`amount`) as aggregate from `tokens` 
    where 
    `user_id` in (15, 49, 58,117, 119, 120, 130, 13) 
    and exists 
    (select * from `transactions` where `tokens`.`transaction_id` = `transactions`.`id`
    and (`custom` != 'BONUS' or `custom` is null))
  

Когда я выполняю полученный запрос NULL , может кто-нибудь любезно объяснить мне, почему запрос не получает запись. Я хотел бы оценить.

Ответ №1:

Потому что вы никогда ->get(); не получаете результатов! $earnedData Переменная теперь содержит проанализированный запрос, поскольку вы никогда его не выполняли.

 $earnedData = Token::whereIn('user_id', $descendants)
    ->whereHas('transaction', function($q) {
        $q->where('custom', '!=', 'BB')->orWhereNull('custom');
    })->sum('amount')
    ->get();