我正在使用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')
如何在代码中使用联接和选择方法?
答案 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();