mysql - Cakephp 找到连接两列

标签 mysql date cakephp find

我有一个 BD,其中包含具有日期和月份字段的人员,如下所示:

人 1(日 = 5;月 = 3)

人 2(日 = 2;月 = 12)

我必须在 2 个日期之间执行查找,例如,我需要 01/03 和 01/06(日/月)之间的所有人,但我不知道如何执行。

我试过使用单独的条件,像这样:

$conditions['People.day >='] = dayA;
$conditions['People.month >='] = monthA;
$conditions['People.day <='] = dayB;
$conditions['People.month <='] = monthB;

但是,这是不正确的,因为它找到了日期和月份,我的意思是,它找到了 monthA 和 monthB 之间的人以及 dayA 和 dayB 之间的人,相反,我需要的是 dayA/monthA 和 dayB/monthB 之间的人

我想我必须做某种 JOIN,但我在这里迷路了,我查看了一些信息,但我不知道从哪里开始。

更新信息:

好的,我正在用这个

Array
(
    [People.month_day BETWEEN ? AND ?] => Array
        (
            [0] => 01/02
            [1] => 28/02
        )

)

但我遇到这样的人: 1/1 2/1 10/1 11/1 12/1 13/1 20/1 21/1 1/2

怎么了?你需要更多代码吗?我正在使用它来检索结果: 分页:

public $paginate = array('People'=>array(
        'limit' => 16,
        'order' => 'People.month, People.day ASC'
    )); 

最佳答案

在您的人员模型中

public $virtualFields = array(
'month_day' => 'CONCAT(People.month, "-", People.day)'
// 'month_day' => 'CONCAT(People.day, "/", People.month)'
);

然后在你的 Controller 中添加

$options = array(
   'conditions' => array(
       'Post.month_day  BETWEEN ? AND ?' => array('01-03','01-06')
       // 'Post.month_day  BETWEEN ? AND ?' => array('03/01','06/01')
   )
);
$posts = $this->Post->find('all',$options);

关于mysql - Cakephp 找到连接两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242120/

相关文章:

javascript - 将mysql数据放入var数组中

mysql - 用户表 - 一张或两张表?

java - 谷歌日历,Java : Set up google event colour and event date from timestamp

php - 在 CakePhp 中,如何只从我的数据库中检索一列?

mysql - 在没有相交sql查询的情况下获取共同ID

mysql - 如何通过在SQL中选择不同交易日期的每一行的最大transaction_date来计算余额?

javascript - 如果日期是今天的日期显示 "today"或 "yesterday"

Python 比较日期范围列表

Cakephp 主页逻辑

php - CakePHP 表关系 $belongsTo 在添加操作中的下拉菜单中不显示任何记录