我想将$searchName
值传递给executeMapSearch()
函数。
并在executeMapSearch()
函数中运行查询。
这是我的MainController
课程。
在search()
函数中,我从Blade View中获取$name
值。
class MainController extends Controller {
public function search() {
$name = Input::get('input-16');
$searchName = $name . "%";
//some code
}
public function executeMapSearch() {
$markers = DB::table('markers')
->leftJoin('locations','markers.locations_id', '=', 'locations.id')
->select('markers.*')
->whereRaw('locations.name LIKE "'.$searchName.'"')
->get();
return View::make('main.results')
->with('title','marks')
->with('mark',$markers);
}
}
我的路线文件如下:
Route::any('main/search', 'Main\MainController@search');
Route::any('main/executeMapSearch', 'Main\MainController@executeMapSearch');
答案 0 :(得分:1)
我在这里遗漏了什么吗?应该能够像这样设置控制器:
public function executeMapSearch($searchname)
然后在search()
return $this->executeMapSearch($searchname);
答案 1 :(得分:0)
首先,我不明白你是否真的需要在控制器中使用search
。查看代码,您根本不需要:
Route::any('main/search', 'Main\MainController@search');
但你只放了一段代码,所以我很难说。
如果要在控制器中运行任何函数,可以像在PHP类中使用方法一样使用它,因此在这种情况下,您可以使用:
->whereRaw('locations.name LIKE "'.$this->search().'"')
而不是
->whereRaw('locations.name LIKE "'.$searchName.'"')
但是,如果您的search
方法返回Response,您应该创建一个额外的函数来仅计算searchName
并在search
和executeMapSearch
方法中使用它。