如何使用when方法在查询中插入select和join方法?

时间:2018-12-31 04:27:54

标签: mysql join select laravel-5

我正在使用when方法通过以下代码进行搜索过滤:

 $newitem = DB::table('itemregistrations')
                ->when(request('umur'), function($query){
                    $query->whereRaw('YEAR(CURDATE()) - lahir_yy >= ?', [request('umur')]);
                })
                ->when(request('negeri_lahir'), function($query){
                    $query->where('NegeriID', request('negeri_lahir'));
                })
                ->when(request('kategori'), function($query){
                    $query->where('CategoryID', request('kategori'));
                })
                ->when(request('pangkat'), function($query){
                    $query->where('OperasiID', request('pangkat'));
                })
                ->get();

但是我需要插入join和select方法来获取类别名称和操作名称。但是当我将其插入代码中时,会出现查询错误。

 ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
 ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
 ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan', 'categories.categoryname', 'operasi.operasiname')

如何在代码中使用联接和选择方法?

1 个答案:

答案 0 :(得分:1)

我猜您正在寻找条件过滤。这可能会对您有所帮助。

$query = DB::table('itemregistrations')
        ->join('categories', 'itemregistrations.categoryid', '=','categories.categoryid')
        ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
        ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan', 'categories.categoryname', 'operasi.operasiname');

        if(request('umur')) {
            $query->whereRaw('YEAR(CURDATE()) - lahir_yy >= ?', [request('umur')]);  
        }

        if(request('negeri_lahir')) {
            $query->where('NegeriID', request('negeri_lahir'));
        }

        if(request('kategori')) {
            $query->where('CategoryID', request('kategori'));
        }

        if(request('pangkat')) {
            $query->where('OperasiID', request('pangkat'));
        }

    $newitem = $query->get();