【发布时间】:2017-02-17 12:20:53
【问题描述】:
如何使用$criteria->compare()或$criteria->addCondition()在yii上搜索多个列
我有一个名为 product 的表,在这个表中我有多个列,例如:“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">
<form role="form" onSubmit="return dosearch();" class="navbar-form- navbar-left- search-form" style="padding-left: 0;"
action="<?php echo Yii::app()->createAbsoluteUrl('/'); ?>" method="get">
<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>
</form>
</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;
}
}
Products::model() 参考产品表 这是表“hts_products”的搜索功能表单模型类。:
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('productId',$this->productId);
$criteria->compare('userId',$this->userId);
$criteria->compare('name',$this->name,true);
$criteria->compare('price',$this->price);
$criteria->compare('quantity',$this->quantity);
$criteria->compare('sizeOptions',$this->sizeOptions,true);
$criteria->compare('productCondition',$this->productCondition,true);
$criteria->compare("from_unixtime(`createdDate`, '%d-%m-%Y')",$this->createdDate,true);
//if(!empty($this->createdDate))
//$criteria->condition = "from_unixtime(`createdDate`, '%d-%m-%Y') = '$this->createdDate'";
//else
//$criteria->compare('createdDate',$this->createdDate);
/* $criteria->compare('likeCount',$this->likeCount);
$criteria->compare('commentCount',$this->commentCount); */
$criteria->compare('chatAndBuy',$this->chatAndBuy);
$criteria->compare('exchangeToBuy',$this->exchangeToBuy);
$criteria->compare('instantBuy',$this->instantBuy);
$criteria->compare('paypalid',$this->paypalid,true);
// $criteria->order = 'productId DESC';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>10,
),
'sort'=>array(
'defaultOrder'=>'productId DESC',
)
));
}
谢谢。
【问题讨论】:
-
感谢@TomaszKane 的回复,但还是不明白..
-
看起来像yii1代码不是yii2,你确定这是yii2吗? :)
-
是的,对不起,它的 yii1
-
谢谢@Insane Skull,请查看更新。
标签: php yii yii2-advanced-app yii-extensions