2011-10-05 18 views
0

我有一個名爲'projects'的表,它有一個名爲project_title的列。下面是sql代碼。順便說一下,我在蛋糕上做了所有這些。我可以告訴你我的蛋糕代碼以及下面生成的SQL查詢。產生當數據庫中存在值時,Mysql返回0行。使用Cakephp

function search() 
{ 
    if (!empty($this->data)): 
    $keywords = Array(); 
    $keywords['categories'] = array(); 

    $categories = $this->data['Project']['ProjectCategory']; 
    if($categories): 
     foreach($categories as $category): 
     $keywords['categories'][] = $category; 
     endforeach; 
    endif; 

    $queries = str_replace(",", "",$this->data['Project']['query']); 
    $keywords['project_title'] = explode(" ", $queries); 

    $nq = ''; 

    foreach($keywords as $key =>$value) 
    { 
     if($key == 'project_title'): 
     foreach($value as $q): 
      $nq[] = array('Project.project_title LIKE'=>"%$q%"); 
     endforeach; 
     elseif($key == 'categories'): 
     foreach($value as $q): 
      $nq[] = array('Category.id'=>"$q"); 
     endforeach; 
     endif; 
    } 

    $final = array("OR"=>$nq); 
    $joins = '';//array('table'=>'users','alias'=>'User','type' => 
       //'LEFT','conditions'=>'User.id = Project.user_id'); 
    $options = array('conditions'=>$final); 

    $projects = $this->Project->ProjectCategory->find('all',$options); 
    $this->set('projects',$projects); 
    $this->paginate(); 

    endif; 
} 

這個查詢:

SELECT * FROM `project_categories` AS `ProjectCategory` 
LEFT JOIN `projects` AS `Project` 
     ON (`ProjectCategory`.`project_id` = `Project`.`id`) 
LEFT JOIN `categories` AS `Category` 
     ON (`ProjectCategory`.`category_id` = `Category`.`id`) 
WHERE `Project`.`project_title` LIKE '%test%' 

,你可以看到,我加入其他2個表。但是在這裏居住

WHERE `Project`.`project_title` LIKE '%test%' 

在項目中,我有3個記錄有項目標題下的測試。我會在下面列出他們

Ryans Test Project 
Ryans Test Project 2 
Test project #2 
Money Aint A Thang 

我收到沒有錯誤,我只是得到一個零結果。
有什麼問題?

+0

當您複製生成的SQL並將其彈出到phpMyAdmin中時會發生什麼? – webbiedave

回答

0

您是否在project_title列上使用區分大小寫的排序規則?如果是這樣,這就可以解釋爲什麼搜索test與包含的行不匹配Test

相關問題