在我的Laravel 5.3项目中,我有一个包含一个文本框(关键字)的表单,以及两个选择下拉列表(类别和位置)。我正在尝试在我的控制器中构建select子句,但是当我将table_1.category或table_1.location放在哪里时,它不起作用。
$keys = \Request::get('keyword');
$category = \Request::get('category');
$location = \Request::get('location');
$myrecord = mytable_1::join('table_2', 'table_2.user_id', '=', 'table_1.user_id')
->where(function ($query) {
$keys = \Request::get('keyword');
$query->where('table_1.title', 'like','%'.$keys.'%')
->orWhere('table_2.company', 'like','%'.$keys.'%');
})
->where('table_1.category', $category)
->where('table_1.location', $location)
->select('table_2.*', 'table_1.*')
->paginate(30);
请告知实现此目的的方法。 感谢
答案 0 :(得分:1)
你需要使用' use()'将参数传递到where查询的方法...如果参数包含数组,则可以使用foreach循环。我认为它会起作用......
$keys = \Request::get('keyword');
$category = \Request::get('category');
$location = \Request::get('location');
$myrecord = mytable_1::join('table_2', 'table_2.user_id', '=','table_1.user_id')
->where(function($query) use ($keys){
$query->where('table_1.title', 'like','%'.$keys.'%')
->orWhere('table_2.company', 'like','%'.$keys.'%');
})
->where('table_1.category', $category)
->where('table_1.location', $location)
->select('table_2.*', 'table_1.*')
->paginate(30);
答案 1 :(得分:0)
如果您正在使用Laravel约定,那么我希望列名称为table_1.category_id
和table_1.location_id
。如果$category
和$location
是这些记录的整数ID,那么它应该按您期望的方式工作。