2016-02-29 3 views
1

У меня есть (странная) проблема с запросом на запросы Laravel/Postgres DB. Я вставит весь запрос здесь (это слишком долго, но мы остановимся только на одной части):Запросы Laravel/Postgres db?

select distinct "products".*, "brands"."name" as "brand", "brands"."image" as "brand_image", "product_categories"."name" as "category", "product_categories"."slug" as "category_slug", count(distinct product_features.feature_category_id) as features_count from "products" inner join "brands" on "products"."brand_id" = "brands"."id" inner join "product_categories" on "products"."category_id" = "product_categories"."id" left join "product_features" on "products"."id" = "product_features"."product_id" where "products"."deleted_at" is null and "products"."category_id" in (142) and "products"."published" = true and "brands"."published" = true and "product_categories"."published" = true and "product_categories"."deleted_at" is null and "price" >= 0 and "price" <= 19000 and "products"."brand_id" in (17) and 
      (product_features.feature_category_id = 555 and 
      CAST(product_features.value AS BOOLEAN) = true and 
      product_features.deleted_at IS NULL) or 
      (product_features.feature_category_id = 554 and 
      CAST(product_features.value AS BOOLEAN) = true and 
      product_features.deleted_at IS NULL) group by "products"."id", "brands"."name", "brands"."image", "product_categories"."name", "product_categories"."slug" having count(distinct product_features.feature_category_id) = 2 order by price asc 

Это первоначальный запрос, но когда я исполню его, я получаю странные ошибки сказал:

ERROR: invalid input syntax for type boolean: "800" 

Я понятия не имею, почему эта ошибка была брошена?

ответ

0

product_features.value - текстовое поле. В то время как Postgres в порядке, отливая все отличные от нуля целые числа, такие как 800, до boolean true, это не нормально с отливкой text, как '800' - boolean.

Решение должно проверить product_features.value на пустоту и/или равенство на '0' вместо CAST(product_features.value AS BOOLEAN) = true.

Смежные вопросы