W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
要查詢 MorphTo
關(guān)聯(lián)的存在,可以使用 whereHasMorph
方法及其相應(yīng)的方法:
use Illuminate\Database\Eloquent\Builder;
// 查詢與帖子或視頻相關(guān)并且標(biāo)題包含 foo 的評(píng)論...
$comments = App\Models\Comment::whereHasMorph(
'commentable',
['App\Models\Post', 'App\Models\Video'],
function (Builder $query) {
$query->where('title', 'like', 'foo%');
}
)->get();
// 查詢與帖子相關(guān)的評(píng)論,標(biāo)題不包含 foo%...
$comments = App\Models\Comment::whereDoesntHaveMorph(
'commentable',
'App\Models\Post',
function (Builder $query) {
$query->where('title', 'like', 'foo%');
}
)->get();
你可以使用 $type
參數(shù)根據(jù)相關(guān)模型添加不同的約束:
use Illuminate\Database\Eloquent\Builder;
$comments = App\Models\Comment::whereHasMorph(
'commentable',
['App\Models\Post', 'App\Models\Video'],
function (Builder $query, $type) {
$query->where('title', 'like', 'foo%');
if ($type === 'App\Models\Post') {
$query->orWhere('content', 'like', 'foo%');
}
}
)->get();
您可以提供 *
作為通配符,讓 Laravel 從數(shù)據(jù)庫中查詢所有可能的多態(tài)類型,而不是傳遞可能的多態(tài)模型數(shù)組。Laravel 將執(zhí)行其他查詢以執(zhí)行此操作:
use Illuminate\Database\Eloquent\Builder;
$comments = App\Models\Comment::whereHasMorph('commentable', '*', function (Builder $query) {
$query->where('title', 'like', 'foo%');
})->get();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: