在Laravel PHP框架中,您可以在where子句中使用条件,如下所示(Fluent):
...
->where(function($query) use ($var) {
if(isset($var)) {
$query->where('something', '=', $var);
}
})
->...
Run Code Online (Sandbox Code Playgroud)
因此,如果您没有$ var变量,则不会将where子句添加到查询中.
我想做同样的事情,但是使用join子句,所以例如只有在设置了$ var时才与另一个表连接,但是这不起作用,查询会崩溃:
...
->join('tableB', function($query) use ($var) {
if(isset($var)) {
$query->on('tableA.id', '=', 'tableB.id');
}
})
->...
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
您不需要在单个转换上链接所有方法.例如:
// Instantiates a Query object.
$query = Db::table('posts')->where('published', '=', '1');
// Adds conditional join and where
if (Input::has('category')) {
$query->join('categories', 'categories.id', '=', 'post.category_id')
->where('categories.permalink', '=', Input::get('category'));
}
// Adds another clause
$query->order_by('created_at');
// Fecthes results
$results = $query->get()
Run Code Online (Sandbox Code Playgroud)