Laravel 4.2 不会回来 View::make
Laravel 4.2 Not Returning View::make
好吧Laravel 4.2;玛丽亚数据库;等等
尝试查询 sql 字符串 "test",我知道它在我创建后就在那里。
这是我的 SearchController.php 代码:
// Here search is ok.
$start = microtime(true);
$items = Project::processSearch('+' . implode(' +', $searchTerms), false, $this->limitPerPage, $page, $this->maxSearchResults);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total == 0)
{
$start = microtime(true);
$items = Project::processSearch(implode(' ', $searchTerms),
true, $this->limitPerPage, $page, $this->limitPerPage);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total > 0)
{
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', "Your query didn't return any result.");
}
}
这是我的 class 代码
public static function processSearch($query, $suggestions, $resultsPerPage, $page, $limit = null)
{
$slug = Str::slug($query) . '-general';
$slug .= $suggestions ? '-suggestions' : '-exact-search';
$results = Cache::remember($slug, 10, function() use($query, $limit)
{
$items = Project::whereRaw(
"MATCH(mixed) AGAINST(? IN BOOLEAN MODE)",
array($query)
)->take(301);
if(Auth::check())
{
$items = $items->with(['unlockedItemsUser' => function($query)
{
$query->where('user_id', '=', Auth::user()->id);
}]);
}
if($limit != null)
{
$items = $items->limit($limit);
}
$items = $items->get();
if(count($items) > 0 && is_object($items))
{
return $items->all();
}
return null;
});
if($results != null)
{
$pages = objectlist_chunk($results, $resultsPerPage);
return Paginator::make($pages[$page - 1], count($results), $resultsPerPage);
}
return Paginator::make(array(), 0, $resultsPerPage);
}
public function unlockedItemsUser()
{
return $this->hasMany('UnlockedItem', 'item_id', 'id');
}
public function newQuery($excludeDeleted = false)
{
$query = parent::newQuery();
if($excludeDeleted)
{
$query->where('deleted', '=', '0');
}
$query->where('blacklist', '=', 0);
return $query;
}
}
这是我的路线
Route::controller('getIndex', 'SearchController');
Route::controller('/search', 'SearchController');
Route::resource('getIndex', 'SearchController');
Route::controller('/user', 'UserController');
Route::controller('/maintenance', 'MaintenanceController');
我在正确的table和数据库中创建了字符串"test" In mysql;一切都好。但是当我尝试查询 "test" 它 returns 和 "No results found";即使我清楚地看到它。
不知道是否有帮助;但这是我发现有趣的分析器部分:
提前致谢!
如果您第一次调用 processSearch
给您带来价值,您不会返回任何视图。
$start = microtime(true);
$items = Project::processSearch('+' . implode(' +', $searchTerms), false, $this->limitPerPage, $page, $this->maxSearchResults);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total == 0)
{
$start = microtime(true);
$items = Project::processSearch(implode(' ', $searchTerms),
true, $this->limitPerPage, $page, $this->limitPerPage);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total > 0)
{
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', "Your query didn't return any result.");
} else {
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', 'There is nothing to show');
}
}
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4));
好吧Laravel 4.2;玛丽亚数据库;等等
尝试查询 sql 字符串 "test",我知道它在我创建后就在那里。
这是我的 SearchController.php 代码:
// Here search is ok.
$start = microtime(true);
$items = Project::processSearch('+' . implode(' +', $searchTerms), false, $this->limitPerPage, $page, $this->maxSearchResults);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total == 0)
{
$start = microtime(true);
$items = Project::processSearch(implode(' ', $searchTerms),
true, $this->limitPerPage, $page, $this->limitPerPage);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total > 0)
{
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', "Your query didn't return any result.");
}
}
这是我的 class 代码
public static function processSearch($query, $suggestions, $resultsPerPage, $page, $limit = null)
{
$slug = Str::slug($query) . '-general';
$slug .= $suggestions ? '-suggestions' : '-exact-search';
$results = Cache::remember($slug, 10, function() use($query, $limit)
{
$items = Project::whereRaw(
"MATCH(mixed) AGAINST(? IN BOOLEAN MODE)",
array($query)
)->take(301);
if(Auth::check())
{
$items = $items->with(['unlockedItemsUser' => function($query)
{
$query->where('user_id', '=', Auth::user()->id);
}]);
}
if($limit != null)
{
$items = $items->limit($limit);
}
$items = $items->get();
if(count($items) > 0 && is_object($items))
{
return $items->all();
}
return null;
});
if($results != null)
{
$pages = objectlist_chunk($results, $resultsPerPage);
return Paginator::make($pages[$page - 1], count($results), $resultsPerPage);
}
return Paginator::make(array(), 0, $resultsPerPage);
}
public function unlockedItemsUser()
{
return $this->hasMany('UnlockedItem', 'item_id', 'id');
}
public function newQuery($excludeDeleted = false)
{
$query = parent::newQuery();
if($excludeDeleted)
{
$query->where('deleted', '=', '0');
}
$query->where('blacklist', '=', 0);
return $query;
}
}
这是我的路线
Route::controller('getIndex', 'SearchController');
Route::controller('/search', 'SearchController');
Route::resource('getIndex', 'SearchController');
Route::controller('/user', 'UserController');
Route::controller('/maintenance', 'MaintenanceController');
我在正确的table和数据库中创建了字符串"test" In mysql;一切都好。但是当我尝试查询 "test" 它 returns 和 "No results found";即使我清楚地看到它。
不知道是否有帮助;但这是我发现有趣的分析器部分:
提前致谢!
如果您第一次调用 processSearch
给您带来价值,您不会返回任何视图。
$start = microtime(true);
$items = Project::processSearch('+' . implode(' +', $searchTerms), false, $this->limitPerPage, $page, $this->maxSearchResults);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total == 0)
{
$start = microtime(true);
$items = Project::processSearch(implode(' ', $searchTerms),
true, $this->limitPerPage, $page, $this->limitPerPage);
$executionTime = microtime(true) - $start;
$total = $items->getTotal();
if($total > 0)
{
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', "Your query didn't return any result.");
} else {
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4))
->with('info', 'There is nothing to show');
}
}
return View::make('search.results')
->with('items', $items)
->with('executionTime', number_format($executionTime, 4));