多条件连接

时间:2014-09-14 07:26:16

标签: sql laravel laravel-4 laravel-query-builder

我尝试在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)));
})

这似乎有效,但似乎有点多。

1 个答案:

答案 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)