2014-12-19 2 views
1

Отношения:Как использовать LEFT JOIN в Sequelize?

Shop.hasMany(ShopAd, {foreignKey : 'shop_id', as : 'ads'}); 
ShopAd.belongsTo(Shop, {foreignKey : 'id'}) 

Я с помощью:

Shop.findAll({where:{id:shopId}, include:[{model:ShopAd, as:'ads', where:{is_valid:1, is_vertify:1}}]}).success(function(result) { 
     callback(result); 
    }); 

Но SQL является:

SELECT `Shop`.`id`, `Shop`.`user_id`, `Shop`.`short_name`, `Shop`.`description`, `Shop`.`tips`, `Shop`.`city`, `Shop`.`province`, `Shop`.`address`, `Shop`.`logo`, `Shop`.`publicity_photo`, `Shop`.`taobao_link`, `Shop`.`is_vertify`, `Shop`.`create_time`, `Shop`.`update_time`, `ads`.`id` AS `ads.id`, `ads`.`shop_id` AS `ads.shop_id`, `ads`.`pic_url` AS `ads.pic_url`, `ads`.`description` AS `ads.description`, `ads`.`link` AS `ads.link`, `ads`.`is_valid` AS `ads.is_valid`, `ads`.`is_vertify` AS `ads.is_vertify`, `ads`.`create_time` AS `ads.create_time`, `ads`.`update_time` AS `ads.update_time` FROM `weshop_shop` AS `Shop` INNER JOIN `weshop_shop_advertsing` AS `ads` ON `Shop`.`id` = `ads`.`shop_id` AND `ads`.`is_valid`=1 AND `ads`.`is_vertify`=1 WHERE `Shop`.`id`='1'; 

Я хочу с помощью "LEFT JOIN", Что я могу сделать?

ответ

6

использование "required: false"
это работает. предложений:

Shop.findAll({where:{id:shopId}, include:[{model:ShopAd, as:'ads', where:{is_valid:1, is_vertify:1}, required:false}]}).success(function(result) { 
     callback(result); 
    }); 
Смежные вопросы