gpt4 book ai didi

laravel - 如何使用子查询做范围

转载 作者:行者123 更新时间:2023-12-03 20:20:26 25 4
gpt4 key购买 nike

我有一个模型 Partner_deal,它有很多字段,但您真正需要知道的唯一一个称为数量,它是一个整数,指定交易可以赎回的次数。

然后我有另一个模型 Partner_deal_redemption 来跟踪赎回。这有一个 partner_deal_id 列和一个 user_id 列来记录哪些用户兑换了哪些交易。

我想在我的 Partner_deal 模型中创建一个范围,以便它只返回兑换数量少于数量字段的交易。

我知道如何在 MySql 中通过执行一个子查询来计算每笔交易有多少赎回,并使用 HAVING 子句过滤掉赎回数 = 数量的那些。

我不知道从哪里开始 Eloquent 地这样做,这是我最好的尝试:

function scopeNotRunOut($query)
{
return $query->having('quantity', '>', function($q)
{
$q->from('partner_deal_redemptions')
->selectRaw('count(*)')
->where('partner_deal_id', '=', 'id');
});
}

最佳答案

你或许可以使用 Eloquent 的 has() 函数:

http://laravel.com/docs/5.0/eloquent#querying-relations

function scopeNotRunOut($query)
{
return $query->has('redemptions', '<', DB::raw('quantity'));
}

要使用此功能,您需要定义 redemptions Partner_deal 模型中的函数,它将表示 Partner_deal 和 Partner_deal_redemption 模型之间的关系。

关于laravel - 如何使用子查询做范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com