我尝试在JOIN中使用多个条件,但是Laravel假设在JOIN上我将比较我的字段而不是常量值。我是否必须使用raw()
方法将其包装起来,然后使用DB::connection()->getPdo()->quote()
将其转义,或者是否有任何快捷方式?
->join('tags', function($join) use ($tags) {
$join->on('tags.id', '=', 'resource_tag.tag_id');
$join->on('tags.name', '=', $tags);
})
->join('tags', function($join) use ($tags) {
$join->on('tags.id', '=', 'resource_tag.tag_id');
$join->on('tags.name', '=', DB::raw(DB::connection()->getPdo()->quote($tags)));
})
这似乎有效,但似乎有点多。
答案 0 :(得分:1)
如果不是字段,则必须使用DB::raw
。
您可以通过删除connection()
方法稍微缩短代码。您不需要那个已经在默认连接上。
DB::raw(DB::getPdo()->quote($tags))
如果您不想使用DB::raw
,可以使用
where
声明(在join
方法之外)。
where('tags.name', $tags)
Model::join('tags', 'tags.id', '=', 'resource_tag.tag_id')->where('tags.name', $tags)