将变量从一个函数传递到同一个控制器中的另一个函数(laravel 5)

时间:2015-05-04 12:28:19

标签: php laravel-5

我想将$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');

2 个答案:

答案 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并在searchexecuteMapSearch方法中使用它。