[英]How to fetch record with secondary key in laravel
我已經搜索了解決方案,但找不到任何可以完美解決這個問題的解決方案。 我有兩個像下面這樣的模型
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;
查詢只是
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;
您可以在 Laravel Query builder 元素中輕松翻譯薄,但如果您只需要它,您可以使用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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.