0

我正在尝试使用 laravel eloquent 来处理查询,但它无法识别关系

$query = $site
    ->consumers()
    ->with([
        'transactions' => function($_query) use ($thresh) {
            $_query
                ->where('status', 'processed')
                ->where('approved', 1)
                ->selectRaw("SUM({$thresh} - value + bonus_value) AS total_points");
        }
    ])
    ->where('total_points', '<=', 5000);

dd($query->get()->toArray());

我有这个代码。当我添加关系时selectRawtransactions它什么都不返回,但是当我删除它时,它返回与消费者关联的所有交易。此外,total_pointsinwhere子句提出了total_points未找到的问题。

我基本上是在尝试获得总分小于或等于 5000 的消费者。

4

1 回答 1

0

发生这种情况的原因是您没有设置任何要检索的关系。例如,外键列名可能不正确或值不匹配。

假设App/Models/Post.php你有这种关系


public function users(){

return $this->belongTo(User::class, 'user_id', 'user_id');
}

如果user_id找到 post 表中的列但值不匹配,App/Models/User.php则关系将在调用时返回空值。因此,请先尝试检查您的关系外键和本地键。

希望这可以帮助您调查您的错误!

于 2022-02-26T17:41:36.340 回答