我有一个关于多个值的内部连接的问题。我确实在laravel中构建了这样的代码。
public function scopeShops($query) {
return $query->join('kg_shops', function($join)
{
$join->on('kg_shops.id', '=', 'kg_feeds.shop_id');
// $join->on('kg_shops.active', '=', "1"); // WRONG
// EDITED ON 28-04-2014
$join->on('kg_shops.active', '=', DB::raw("1"));
});
}
唯一的问题是,它给出了这样的结果:
Column not found: 1054 Unknown column '1' in 'on clause' (SQL: select `kg_feeds`.* from `kg_feeds` inner join `kg_shops` on `kg_shops`.`id` = `kg_
feeds`.`shop_id` and `kg_shops`.`active` = `1`) (Bindings: array ( ))
正如您所看到的,join中的多个条件都很好,但是它认为1
是一个列而不是字符串,这是可能的吗?还是必须在where中修复它?
7条答案
按热度按时间y53ybaqx1#
crcmnpdw2#
因为你这样做的方式,它认为这两个都是连接条件在您的代码如下:
因此,您应该删除第二行:
现在,您应该添加一个where子句,它应该如下所示:
fkaflof63#
您只需将多个条件作为where()添加到连接闭包中即可
7cwmlq894#
where in (list_of_items)
的更多信息:希望能有所帮助;)
6ioyuze25#
这在政治上并不正确,但确实有效
bis0qfac6#
fruv7luv7#
您可以看到下面的代码来解决这个问题
或者别的解决方法