Как искать в нескольких столбцах на юй использованием $criteria->compare()
или $criteria->addCondition()
У меня есть таблица с именем продукт и внутри этой таблицы У меня есть несколько столбцов, например: «productId, name, description ...» Мне нужен мой пользователь для поиска в нескольких столбцах, например $criteria->compare('name' AND 'id' And '','' ,$search,true);
, но это никогда не работает! только один столбец работает как: $ criteria-> addCondition ("name LIKE '% $ search%'"); или $ criteria-> compare ('productId', $ search, true);
Моя форма поиска:
<div class="search-bar col-md-9 col-lg-9 no-hor-padding">
\t <form role="form" onSubmit="return dosearch();" class="navbar-form- navbar-left- search-form" style="padding-left: 0;"
\t \t action="<?php echo Yii::app()->createAbsoluteUrl('/'); ?>" method="get">
\t \t <input type="text" maxlength="30" placeholder="<?php echo Yii::t('app','Search products'); ?>" class="search-icon form-control input-search <?php echo !empty(Yii::app()->user->id) ? "" : "sign" ?>" name="search"></input>
\t </form> \t \t
</div>
И моя функция или контроллер:
if(!empty($search)) {
//$criteria->addCondition("name LIKE '%$search%'");
$criteria->compare('name',$search,true);
$searchCriteria = clone $criteria;
$searchproducts = Products::model()->find($searchCriteria);
if(empty($searchproducts)){
$catrest = 1;
$location = 1;
}
}
Продукты :: Модель(), обратитесь к таблице продуктов Вот функция поиска класс модели для таблицы «hts_products» .:
public function search()
\t {
\t \t // @todo Please modify the following code to remove attributes that should not be searched.
\t \t $criteria=new CDbCriteria;
\t \t $criteria->compare('productId',$this->productId);
\t \t $criteria->compare('userId',$this->userId);
\t \t $criteria->compare('name',$this->name,true);
\t \t $criteria->compare('price',$this->price);
\t \t $criteria->compare('quantity',$this->quantity);
\t \t $criteria->compare('sizeOptions',$this->sizeOptions,true);
\t \t $criteria->compare('productCondition',$this->productCondition,true);
\t \t $criteria->compare("from_unixtime(`createdDate`, '%d-%m-%Y')",$this->createdDate,true);
\t \t //if(!empty($this->createdDate))
\t \t //$criteria->condition = "from_unixtime(`createdDate`, '%d-%m-%Y') = '$this->createdDate'";
\t \t //else
\t \t //$criteria->compare('createdDate',$this->createdDate);
\t \t /* $criteria->compare('likeCount',$this->likeCount);
\t \t $criteria->compare('commentCount',$this->commentCount); */
\t \t $criteria->compare('chatAndBuy',$this->chatAndBuy);
\t \t $criteria->compare('exchangeToBuy',$this->exchangeToBuy);
\t \t $criteria->compare('instantBuy',$this->instantBuy);
\t \t $criteria->compare('paypalid',$this->paypalid,true);
\t \t // $criteria->order = 'productId DESC';
\t \t return new CActiveDataProvider($this, array(
\t \t 'criteria'=>$criteria,
\t \t 'pagination'=>array(
'pageSize'=>10,
\t \t),
\t \t 'sort'=>array(
'defaultOrder'=>'productId DESC',
\t \t)
\t \t));
\t }
Спасибо.
Читайте это: http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html#where()-detail? – TomaszKane
Спасибо @TomaszKane за ваш ответ, но все равно не понимаю. – zaxf
выглядит как yii1 код не yii2, вы уверены, что это yii2? :) –