#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();