不同表的Laravel关系数据取决于条件



我正在处理一个代码段,但我必须检查另一个表,如果该客户数据存在,则返回数据。如果就业表上不存在客户数据,则返回基于前一个检查的数据,然后忽略其余数据,但如果存在,则我希望使用指定的条件来检查并返回该数据。这是我试过的。

Customers::query()
->distinct('id')
->whereHas('quote')
->where(
function ($query) {
$query->whereHas('profile', function ($query) {
$query->where(function ($query) {
$query->whereNull('nin')->WhereNull('bvn');
})->orWhere(function ($query) {
$query->whereNotNull('nin')->whereNotNull('bvn');
});
})->orWhereHas('employment', function ($query) {
$query->where(function ($query) {
$query->whereNull('bank_statement_url')->WhereNull('mono_account_statement_url');
})->orWhere(function ($query) {
$query->whereNotNull('bank_statement_url')->whereNotNull('mono_account_statement_url');
});
});
}
)->paginate(30);

我清理了您的代码,并将orWhereHas()更改为whereHas():

Customers::query()
->distinct('id')
->whereHas('quote')
->whereHas('profile', function ($query) {
$query->where(function ($query) {
$query->whereNull('nin')->WhereNull('bvn');
})->orWhere(function ($query) {
$query->whereNotNull('nin')->whereNotNull('bvn');
});
})->whereHas('employment', function ($query) {
$query->where(function ($query) {  
$query->whereNull('bank_statement_url')
->whereNull('mono_account_statement_url');
})->orWhere(function ($query) {
$query->whereNotNull('bank_statement_url')
->whereNotNull('mono_account_statement_url');
});
}
)->paginate(30);

最新更新