首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql编写自己的Yii2来过滤数据

sql编写自己的Yii2来过滤数据
EN

Stack Overflow用户
提问于 2017-06-29 12:14:19
回答 1查看 243关注 0票数 0

我在yii2中使用gii生成了一个crud系统。我需要编写这个sql来过滤表中的正确数据。

$date_now = date('Y-m-d');

$query = "SELECT * FROM reservation_db WHERE STR_TO_DATE(date,'%d-%m-%Y') > '$date_now'";

我知道这是错误的,我将date类型文本保存在数据库中。因此,我需要使用STR_TO_DATE将字符串转换为日期,并使sql只选择大于今天的数据。

你知道我在哪里做这个sql吗?

这是我的ReservationSearch模型

代码语言:javascript
运行
复制
 <?php

 namespace app\models;

 use Yii;
 use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\ReservationDb;

/** * ReservationSearch代表了关于app\models\ReservationDb的搜索表单背后的模型。*/类ReservationSearch扩展ReservationDb { /** * @inheritdoc */公共函数规则(){ return [[‘保留_id’,‘成人’,‘孩子’,'infat',‘电话号码’,‘整数’],[‘名称’,‘日期’,‘时间’,‘会话’,‘座位区域’,‘备注’,‘'payment_status','reservation_date',’安全‘],];}

代码语言:javascript
运行
复制
/**
 * @inheritdoc
 */
public function scenarios()
{
    // bypass scenarios() implementation in the parent class
    return Model::scenarios();
}

/**
 * Creates data provider instance with search query applied
 *
 * @param array $params
 *
 * @return ActiveDataProvider
 */
public function search($params)
{
    $date_now = date('Y-m-d');

    $query = ReservationDb::find();
    $query->andFilterCompare( 'STR_TO_DATE(date)', '$date_now', '>');





    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $this->load($params);

    if (!$this->validate()) {
        // uncomment the following line if you do not want to return any 
    records when validation fails
        // $query->where('0=1');
        return $dataProvider;
    }

    // grid filtering conditions
    $query->andFilterWhere([
        'reservation_id' => $this->reservation_id,
        'adult' => $this->adult,
        'child' => $this->child,
        'infat' => $this->infat,
        'phone_num' => $this->phone_num,
    ]);

    $query->andFilterWhere(['like', 'name', $this->name])
        ->andFilterWhere(['like', 'date', $this->date])
        ->andFilterWhere(['like', 'time', $this->time])
        ->andFilterWhere(['like', 'session', $this->session])
        ->andFilterWhere(['like', 'seat_area', $this->seat_area])
        ->andFilterWhere(['like', 'remark', $this->remark])
        ->andFilterWhere(['like', 'payment_status', $this->payment_status])
        ->andFilterWhere(['like', 'reservation_date', $this-
      >reservation_date]);

    return $dataProvider;
}

}

EN

回答 1

Stack Overflow用户

发布于 2017-06-29 16:15:08

试试这个:

代码语言:javascript
运行
复制
public function search($params)
{
   $date_now = date('Y-m-d');

   $query = ReservationDb::find();
   $query->andFilterCompare('STR_TO_DATE(date)', $date_now, '>');
   .
   .
   .
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44816248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档