Это потому, что вы приказываете eloquent проверять NULL в базе данных, что приводит к следующему запросу:
WHERE brand IS NULL AND ... AND seller_type IS NULL
Чтобы избежать этого, вы не должны применять фильтры к вашему запросу, если вы на самом деле не 'не хочу фильтровать.Фильтруйте только заданные значения следующим образом:
$posts = Post::all();
if( !is_null($brand) )
$posts = $posts->where('brand', $brand)
// ...
if( !is_null($seller_type) )
$posts = $posts->where('seller_type', $seller_type)
$posts = $posts->paginate(4);
Примечание. Вы можете получить запрос, сгенерированный с помощью метода toSQL
:
dd( $posts->toSql() );
Очень удобно для отладки.