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

x33g5p2x  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我正在使用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方法来获取categoryname和operasiname。但是当我把它插入到代码中时,查询错误就出现了。

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

如何在代码中使用join和select方法?

tgabmvqs

tgabmvqs1#

我猜你正在寻找条件过滤。这也许对你有帮助。

$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();

相关问题