【问题标题】:Find product in database with "like" statement in cakephp在 cakephp 中使用“like”语句在数据库中查找产品
【发布时间】:2014-06-20 20:02:36
【问题描述】:

我有一个功能可以在数据库中搜索所有带有用户搜索描述的产品,但它不起作用。问题出在哪里?

 public function searchProduct(){
            $search = $this->request->query('search');
            $products = $this->Product->find("all",array('conditions'=>array('Description LIKE'=>"%$search%")));
            if($this->Auth->user()!= null){
                $userId = $this->Auth->user('id');
                $user = $this->User->findById($userId);
                $filters = $user['Filter'];
                $arrayFiltersOfUser = array();
                $arrayOfProductIds = array();
                for($i = 0; $i < count($filters); $i++){
                    $arrayFiltersOfUser[$i] = $filters[$i]['id'];
                }
                for($i = 0; $i < count($products); $i++){
                    $arrayOfProductIds[$i] = $products[$i]['Product']['id'];
                }
                for($i = 0; $i < count($arrayOfProductIds); $i++){
                    $arrayFiltersOfProduct_aux[$i] = $this->FiltersProduct->findAllByProductId($arrayOfProductIds[$i]);
                    $array = $arrayFiltersOfProduct_aux[$i];
                    for($j = 0; $j < count($array); $j++){
                        $array2[$j] = $array[$j]['FiltersProduct']['filter_id'];
                    }
                    $containsAllValues = !array_diff($arrayFiltersOfUser, $array2);
                    if($containsAllValues == true){
                        $this->set("is_valid", "yes");
                        $this->set("_serialize", array("is_valid"));
                    }
                    else{
                        $this->set("is_valid", "no");
                        $this->set("_serialize", array("is_valid"));
                    }
                }
            }
            $this->set("response", $products);
            $this->set("_serialize", array("response"));
        }

【问题讨论】:

  • 从第 4 行开始的所有代码似乎都与问题无关。请不要包含只会分散问题的代码。

标签: database cakephp sql-like


【解决方案1】:

您现在搜索的是:%$search% 而不是 $search 的值。

尝试替换 find("all",array('conditions'=>array('Description LIKE'=>"%$search%"))); find("all",array('conditions'=>array('Description LIKE'=>"%".$search."%"))); 这应该可以解决问题。

【讨论】:

  • 这是一个非功能性的变化......双引号字符串中的字符串被评估为变量 - 这个答案实际上并没有改变任何东西。
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2015-12-15
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多