我很难建立一个雄辩的查询来提供问题案例的交易仪表板。问题被定义为用户尚未完成交易的所有失败事务。
我有两个表,users
和transactions
。用户可以拥有多笔交易,而交易的状态可以是completed
或failed
。
我需要一个雄辩的查询来获取至少有一个失败的交易,并且没有任何已完成的交易的所有用户的失败交易列表。我目前通过查询用户而不是交易来从另一个方向接近这个
$failed_transactions = User::has('transactions')->whereDoesntHave('transactions', function($query) {
$query->where('status', 'completed');
})->get();
问题是它返回用户列表而不是失败的事务。
非常感谢任何帮助!
答案 0 :(得分:1)
我需要一个雄辩的查询来获取至少有一个失败的交易,并且没有任何已完成的交易的所有用户的失败交易列表。
如果您想获得失败的交易收集:
Transaction::whereHas('user.transactions', function($q) {
$q->where('status', 'failed');
})
->whereDoesntHave('user.transactions', function($q) {
$q->where('status', 'completed');
})
->where('status', 'failed')
->get()
如果您想让用户处理失败的交易:
User::whereHas('transactions', function($q) {
$q->where('status', 'failed');
})
->whereDoesntHave('transactions', function($q) {
$q->where('status', 'completed');
})
->with(['transactions' => function($q) {
$q->where('status', 'failed');
}])
->get()