2017-04-19 41 views
0

好吧,让Laravel 4.2; MariaDB的; ectLaravel 4.2不回复查看:: make

试图查询一个SQL字符串“测试”,我知道它在那里,因为我创建它。

这里是我的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."); 
      } 
     } 

这里是我的类代码

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'); 

我创建的字符串“测试“在MySQL中在正确的表和数据库中;一切安好。但是,当我尝试查询“测试”它返回“找不到结果”;即使我清楚地看到它。

Idk如果这有帮助;但这里有一个我感兴趣的分析器部分: enter image description here

谢谢你的进阶!

+0

如果没有找到结果,您不会返回任何视图,也许这就是问题 – Jerodev

+0

是的,但应该有结果。这是“测试”。我错过了什么吗?对不起,我很疲惫了2天。要去掉。下午你会在我的! – RayCrush

+0

如果这是一个MySQL问题,请提供_generated_ SQL语句和'SHOW CREATE TABLE'。 –

回答

0

如果您第一次致电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));