【问题标题】:Between condition in cakephp 3 betacakephp 3 beta 中的条件之间
【发布时间】:2015-01-25 09:42:08
【问题描述】:

cakephp 3 中这段代码的等价物是什么

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

我试试这个

$condition["Advertisements.created BETWEEN ? AND ?"] = [1418874212 , 1418889212];

但它不起作用

【问题讨论】:

标签: model between cakephp-3.0


【解决方案1】:
            $Query = $Table
            ->find('all')
            ->where([
                'date BETWEEN :start_date AND :end_date'   
            ])

            ->bind(':start_date ',$s_date)
            ->bind(':end_date',$e_days); 

            $Query->hydrate(false);
            $result = $Query->toArray();

【讨论】:

  • 能否提供一个简短的描述。
  • 如果您想查找两个日期之间的所有日期,即 start_date 和 end_date,那么过去的条件应该是这样的:'conditions' => ['date BETWEEN start_date AND end_date' => [ '2015-10-07', '2015-10-20']] ..... 之后可以使用 bind() 方法绑定数据,因为直接传递用户输入的列名是不安全的..跨度>
【解决方案2】:

您可以使用以下两种方法之一。

方法一:

$start_date = '2015-11-01 00:00:00';
$end_date = '2015-11-01 23:59:59';
$query = $this->Advertisements->find('all')
         ->where(function ($exp, $q) use($start_date,$end_date) {
             return $exp->between('created', $start_date, $end_date);
         });
$result = $query->toArray();

方法二:

$start_date = '2015-11-01 00:00:00';
$end_date = '2015-11-01 23:59:59';
$query = $this->Advertisements->find('all')
         ->where([
            'created BETWEEN :start AND :end'
         ])
         ->bind(':start', new \DateTime($start_date), 'datetime')
         ->bind(':end',   new \DateTime($end_date), 'datetime');
$result = $query->toArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多