Laravel 8 查詢不存在的關(guān)聯(lián)

2021-07-19 11:40 更新

訪問(wèn)模型的記錄時(shí),您可能希望根據(jù)不存在的關(guān)系來(lái)篩選結(jié)果。例如,假設(shè)您要檢索所有 沒(méi)有 評(píng)論的博客文章。為此,您可以將關(guān)系的名稱傳遞給 doesntHaveorDoesntHave 方法:

$posts = App\Models\Post::doesntHave('comments')->get(); 

如果需要更多功能,可以使用 whereDoesntHaveorWhereDoesntHave 方法將「where」 條件加到 doesntHave 查詢上。這些方法允許你向關(guān)聯(lián)加入自定義限制,比如檢測(cè)評(píng)論內(nèi)容:

use Illuminate\Database\Eloquent\Builder;

$posts = App\Models\Post::whereDoesntHave('comments', function (Builder $query) {
    $query->where('content', 'like', 'foo%');
})->get(); 

還可以使用「點(diǎn)」語(yǔ)法執(zhí)行嵌套關(guān)聯(lián)查詢。例如,下面的查詢用于獲取帶有沒(méi)被禁用的作者發(fā)表評(píng)論的文章:

use Illuminate\Database\Eloquent\Builder;

$posts = App\Models\Post::whereDoesntHave('comments.author', function (Builder $query) {
    $query->where('banned', 0);
})->get(); 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)