douba4933 2014-02-21 15:50
浏览 563
已采纳

Laravel查询“if”条件?

I'm trying to make an advanced search form with Laravel 4, and this is the query:

$result = DB::table('users_ads')
        ->join('ads', 'users_ads.ad_id', '=', 'ads.id')         
        ->orderBy($column, $method)
        ->where('status', TRUE)
        ->where(function($query) use ($input)
        {
            $query->where('short_description', $input['search'])
                    ->where('category', $input['category'])
                    ->where('product', $input['product']);

        })
        ->join('users', 'users_ads.user_id', '=', 'users.id')
        ->select('ads.id', 'ads.img1', 'ads.short_description', 'ads.category', 'ads.product', 'ads.price', 'users.city')
        ->get();

    return $result;

The problem is that the user might not use all the input fields. So i want to include some if conditions in this part:

$query->where('short_description', $input['search'])
                    ->where('category', $input['category'])
                    ->where('product', $input['product']);

.. so if the input is empty, to remove the "where" condition.

  • 写回答

2条回答 默认 最新

  • dongyi1748 2014-02-21 15:56
    关注
    $filters = [
        'short_description' => 'search',
        'category' => 'category',
        'product' => 'product',
    ];
    
    .....
    
    ->where(function($query) use ($input, $filters)
    {
        foreach ( $filters as $column => $key )
        {
            $value = array_get($input, $key);
    
            if ( ! is_null($value)) $query->where($column, $value);
        }
    });
    

    Newer version of Laravel have a when method that makes this much easier:

    ->where(function ($query) use ($input, $filters) {
        foreach ($filters as $column => $key) {
            $query->when(array_get($input, $key), function ($query, $value) use ($column) {
                $query->where($column, $value);
            });
        }
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘