【问题标题】:Conditional join in Laravel FluentLaravel Fluent 中的条件连接
【发布时间】:2013-03-22 00:04:19
【问题描述】:

在 Laravel PHP 框架中,您可以在 where 子句中使用条件,如下所示(Fluent):

...
->where(function($query) use ($var) {
    if(isset($var)) {
        $query->where('something', '=', $var);
    }
})
->...

因此,如果您没有 $var 变量,则不会将 where 子句添加到查询中。

我想做同样的事情,但使用连接子句,例如,仅当设置了 $var 时才与另一个表连接,但这不起作用,查询崩溃:

...
->join('tableB', function($query) use ($var) {
    if(isset($var)) {
        $query->on('tableA.id', '=', 'tableB.id'); 
    }
})
->...

有什么建议吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您不需要在一次强制转换中链接所有方法。 例如:

    // 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()
    

    【讨论】:

    • 谢谢你,你拯救了我的一天。
    • 这么明显的答案,却完全忘记了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2013-04-11
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多