多个条件连接
Posted
技术标签:
【中文标题】多个条件连接【英文标题】:Multiple Conditional Joins 【发布时间】:2014-11-07 23:24:57 【问题描述】:我尝试在我的 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】:如果不是字段,则必须使用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)
【讨论】:
感谢您的回复。是的,我以为我运气不好。真的很惊讶这些表单和查询构建器已经出现了这么长时间,但还没有内置东西。关于在哪里,是的,这是真的,但这会破坏我优化查询的目的哈哈。如果我这样做,连接会更大,然后被过滤。我已经完成了两者的解释,而且我这样做的方式似乎更有效率。以上是关于多个条件连接的主要内容,如果未能解决你的问题,请参考以下文章