Laravel获取关系不包含特定数据的数据



我有发票模型和发票日志。

发票日志包含以下数据

id-----invoice_id----status--
1------16------------processing
2------16------------shipped
3------16------------delivered
4------16------------returned
5------17------------processing
6------17------------shipped
7------18------------processing

我想要发票对象,其中发票日志不包含'已交付'或'已返回'状态。

我想要发票编号17和18作为结果。

我试过了

$invoices = Invoice::whereHas('logs', function ($query) {
$query->where('invoice_status','!=', 'delivered')->where('invoice_status','!=', 'returned');
})->get();

但是返回错误的值

我认为您的解决方案非常接近-您可以尝试以下whereDoesntHave吗?

$invoices = Invoice::whereDoesntHave('logs', function ($query) {
$query->where('invoice_status','!=', 'delivered')
->orWhere('invoice_status','!=', 'returned');
})->get();

最新更新