Laravel 5.8 whereHasMorph“点”语法不支持?

ind*_*man 2 laravel eloquent laravel-5.8

Laravel 5.8 引入了whereHasMorph查询多态关系。https://laravel.com/docs/5.8/eloquent-relationships#querying-relations

我可能遗漏了一些东西,但它似乎不支持点语法。

在正常的关系中,我可以做这样的事情:

$comments->whereHasMorph(
'video.someRelationship', function ($query) {
    $query->where(...);
});

Run Code Online (Sandbox Code Playgroud)

但对于 whereHasMorph 来说这似乎不起作用:

$comments->whereHasMorph(
    'commentable.someRelationship',
    [Video::class, Audio::class],
    function ($query) {
        $query->where(...);
    }
);
Run Code Online (Sandbox Code Playgroud)

如果确实不支持,有办法解决吗?

Jon*_*eir 5

whereHasMorph()不(也不能)支持“点语法”。

在闭包内部使用whereHas()嵌套关系:

$comments->whereHasMorph(
    'commentable',
    [Video::class, Audio::class],
    function ($query) {
        $query->where(...) // Constraint on "commentable"
            ->whereHas('someRelationship', function ($query) {
                $query->where(...); // Constraint on "someRelationship"
            });
    }
);
Run Code Online (Sandbox Code Playgroud)