I have a question about inner joins with multiple on values. I did build my code like this in 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")); }); }
Only problem is, it gives this outcome:
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 ( ))
As you can see, the multiple conditions in the join go fine, but it thinks the 1
is a column instead of a string. Is this even possible, or do I have to fix it in the where.
Thanks in advance!
Advertisement
Answer
return $query->join('kg_shops', function($join) { $join->on('kg_shops.id', '=', 'kg_feeds.shop_id'); }) ->select('required column names') ->where('kg_shops.active', 1) ->get();