【发布时间】:2020-04-16 07:07:39
【问题描述】:
我已经搜索了解决方案,但找不到任何完美解决此问题的方法。 我有两个模型,如下所示
class Payments extends Model
{
protected $table = 'payments';
public function investment_()
{
return $this->belongsTo('App\Investments', 'investment_id', 'id');
}
}
和
class Investments extends Model
{
protected $table = 'investments';
public function payments_()
{
return $this->hasMany('App\Payments', 'investment_id', 'id');
}
}
付款有一个金额列,而投资也有一个金额列。
如何仅在特定投资的总付款至少是投资金额的一半的情况下提取所有付款?
我不知道如何构造查询,以便付款可以选择相应的投资值并检查条件。
这就是我目前在我的控制器中所拥有的
$payments = Payments::where('amount', '>=', Investment::where('id', Payments::where(?)))->get();
注意:我不知道在问号中填什么,也不知道我的方法是否正确。
这是一个错误查询示例,可以更好地说明这一点
SELECT a.SUM(a.amount) AS amount FROM payments as a, investments as b where a.investment_id = b.id and a.sum(a.amount)*2 = b.amount GROUP BY a.investment_id;
【问题讨论】:
-
使用 eloquent 你不能不接触 PHP,而使用查询生成器你可以在数据库端完成所有操作