Php 如何在laravel中使用辅助键获取记录

Php 如何在laravel中使用辅助键获取记录,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我一直在寻找解决方案,但找不到任何能完美解决这个问题的方法。 我有两个模型如下 class Payments extends Model { protected $table = 'payments'; public function investment_() { return $this->belongsTo('App\Investments', 'investment_id', 'id'); } } 及 付款有一个金额列,而投资也

我一直在寻找解决方案,但找不到任何能完美解决这个问题的方法。 我有两个模型如下

class Payments extends Model
{
    protected $table = 'payments';

    public function investment_()
    {
        return $this->belongsTo('App\Investments', 'investment_id', 'id');
    }

}

付款有一个金额列,而投资也有一个金额列

如果某项投资的总付款至少为投资金额的一半,我如何才能获得所有付款

我不知道如何构造查询,以便付款可以选择相应的投资价值并检查条件

这就是我目前在控制器中所拥有的
$payments=payments::where('amount','>=',Investment::where('id',payments::where(?)->get()

注:我不知道该在问号中加什么,也不知道我的方法是否正确

下面是一个错误的查询示例,可以更好地说明这一点

选择a.SUM(a.amount)作为a付款的金额,选择b投资,其中a.investment_id=b.id和a.SUM(a.amount)*2=b.amount按a.investment_id分组

查询只是

SELECT a.SUM(a.amount) AS amount 
FROM payments as a JOIN investments as b 
     ON a.investment_id = b.id 
GROUP BY a.investment_id
HAVING SUM(a.amount)*2 < b.amount;
选择a.SUM(a.amount)作为金额
从作为a的付款加入作为b的投资
关于a.investment_id=b.id
按a.investment\u id分组
总金额(a.金额)*2

您可以在Laravel查询生成器元素中轻松地转换thin,但如果您只是需要它,您可以使用
DB::select('Query')
来获取它们,希望这能解决您的问题。请查收。谢谢

\App\Payment::where(function ($query) {
            $query->whereRaw('(select SUM(payment_amount) from payments as payments_final where investment_id = payments.investment_id) >= (select investment_amount/2 from investments where id=payments.investment_id)');
        })
        ->get();

使用eloquent,您必须接触PHP,而使用query builder,您可以在数据库端完成所有工作
\App\Payment::where(function ($query) {
            $query->whereRaw('(select SUM(payment_amount) from payments as payments_final where investment_id = payments.investment_id) >= (select investment_amount/2 from investments where id=payments.investment_id)');
        })
        ->get();