可能这是一个简单的答案,但我找不到它! 我正在使用Eloquent对数据库执行查询,具有以下代码:
public function postSearch(Request $request)
{
$query = Customer::select('identification', 'first_name', 'second_name', 'first_lastname', 'second_lastname', 'genre')
->where('identification', 'LIKE', "%$request->identification%")
->where('first_name', 'LIKE', "%$request->first_name%")
->Where('second_name', 'LIKE', "%$request->second_name%")
->Where('first_lastname', 'LIKE', "%$request->first_lastname%")
->Where('second_lastname', 'LIKE', "%$request->second_lastname%")
->Where('genre', 'LIKE', "%$request->genre%");
$request->session()->put('list', $query->get());
$customers = $query->paginate(20);
return view('customer.index', compact('customers'));
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$query = Customer::select('identification', 'first_name', 'second_name', 'first_lastname', 'second_lastname', 'genre');
$request->session()->put('list', $query->get());
$customers = $query->paginate(20);
return view('customer.index', compact('customers'));
}
它完美无缺,但现在,我想优化它,创建另一个接收$查询的功能。像这样:
public function displayResult(Builder $query,Request $request)
{
$request->session()->put('list', $query->get());
$customers = $query->paginate(20);
return view('customer.index', compact('customers'));
}
目标是从我以前的方法调用函数,例如:
public function index(Request $request)
{
$query = Customer::select('identification', 'first_name', 'second_name', 'first_lastname', 'second_lastname', 'genre');
$this->displayResult($query, $request);
}
但是,我的观点并没有显示任何内容。难道我做错了什么? 我应该使用Model而不是Builder参数吗?如果我这样做,那么它会显示以下错误:
参数1传递给 App \ Http \ Controllers \ CustomerController :: displayResult()必须是 App \ Http \ Controllers \ Model的实例,实例 Illuminate \ Database \ Eloquent \ Builder给出,在第54行调用....并定义
这条线正是我呼唤新功能的地方。 提前谢谢。
答案 0 :(得分:0)
您的 displayResult()方法会返回视图实例,但您忘记从控制器的 index()方法返回它。
替换
$this->displayResult($query, $request);
与
return $this->displayResult($query, $request);