ManyToMany Eloquent Laravel 与 whereHas 的查询问题

ManyToMany Eloquent Laravel query issue with whereHas

我在两个模型之间存在多对多关系:AlbumMedia

这里可以看到Album型号:

class Album extends Model
{
    public function medias()
    {
        return $this->belongsToMany('\Api\Medias\Models\Media');
    }
}

此处Media型号:

class Media extends Model
{
    public function albums()
    {
        return $this->belongsToMany('\Api\Medias\Models\Album');
    }
}

现在我想 select 属于 public=1 相册的所有媒体。 eloquent 查询是这样的:

return $this->getModel()::whereHas('albums', function($query) {
                $query->where('public', '=', '1');
            })->get();

但我在 whereHas 行中收到此错误:

local.ERROR: ErrorException: compact(): Undefined variable: operator in...

我正在使用 Laravel Framework 5.4.36.

好像是5.4的问题。 (https://github.com/laravel/framework/issues/26936) 您应该尝试从 5.4 升级到 5.5