2016-12-07 43 views
0

方言:Postgres的
数据库版本:@latest
Sequelize版本:@latest发现使用模型关联

我试图找出如何使用联营模式。我有3种型号:postpostCityregion。它们具有以下关系: ​​联想到post (post_id)region (region_id)。我使用的是搜索功能是这样的:

include: [ 
    { 
     model: models.postCity, 
     include:[{model:models.region}], 
     attributes: [[models.sequelize.fn('count', 'post_id'), 'count']], 
    } 
    ], 
    where: { 
    $or: [ 
     { 
      "create_by" : {$not: 67} 
     }, 
     { 
     // "postCities.region_name":{$iLike: "%Guangazhou2%"} 
     }, 
     { 
      "description":{$iLike: "%India%"} 
     } 
     ] 
    } 

导致:

SELECT "post"."post_id", "post"."description", "post"."create_by", 
     "post"."create_time", "post"."update_time", "post"."country_id", 
     "postCities"."post_id" AS "postCities.post_id", 
     "postCities"."region_id" AS "postCities.region_id", 
     "postCities"."order_no" AS "postCities.order_no", 
     "postCities.region"."region_id" AS "postCities.region.region_id", 
     "postCities.region"."region_name" AS "postCities.region.region_name", 
     "postCities.region"."country_id" AS "postCities.region.country_id", 
     "postCities.region"."province_id" AS "postCities.region.province_id" 
FROM "t_post" AS "post" 
    LEFT OUTER JOIN "t_post_city" AS "postCities" 
     ON "post"."post_id" = "postCities"."post_id" 
    LEFT OUTER JOIN "t_region" AS "postCities.region" 
     ON "postCities"."region_id" = "postCities.region"."region_id" 
WHERE ("post"."create_by" != 67 OR "post"."description" ILIKE '%India%'); 

当我取消"postCities.region_name":{$iLike: "%Guangazhou2%"}然后我得到这个错误

column post.postCities.region_name does not exist 

我只是想我的查询像这样

... WHERE ("post"."create_by" != 67 
      OR "post"."description" ILIKE '%India%' 
      OR "postCities.region_name" ILIKE: "%Guangazhou2%") 

更新

我也试过包括[{model:models.region, where:{"region_name":{$iLike: "%Guangazhou2%"}}}]但这并没有给我适当的结果。

回答

1

为了增加条件包括表,应换用条件符号$,喜欢的话:

include: [{ 
    model: models.postCity, 
    include:[{model:models.region}], 
    attributes: [[models.sequelize.fn('count', 'post_id'), 'count']], 
}], 
where: { 
    $or: [{ 
     "create_by" : {$not: 67} 
    }, { 
     "$postCities.region.region_name$":{$iLike: "%Guangazhou2%"} 
    }, { 
     "description":{$iLike: "%India%"} 
    }] 
}