为什么在有行的情况下查询deos无法获取结果?

时间:2019-03-14 07:21:44

标签: 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 个答案:

答案 0 :(得分:0)

因为您永远不会->get();得到结果!现在,$earnedData变量包含已分析的查询,就好像您从未执行过该查询一样。

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