Cakephp找到加入两列

Whi*_*ter 1 mysql cakephp date find

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

person1(day = 5; month = 3)

person2(day = 2; month = 12)

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

我尝试使用单独的条件,如下所示:

$conditions['People.day >='] = dayA;
$conditions['People.month >='] = monthA;
$conditions['People.day <='] = dayB;
$conditions['People.month <='] = monthB;
Run Code Online (Sandbox Code Playgroud)

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

我想我必须做某种加入,但我迷失在这里,我看了一些信息,但我不知道从哪里开始.

更新信息:

好的,我正在使用它

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

)
Run Code Online (Sandbox Code Playgroud)

但我得到这样的人: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'
    )); 
Run Code Online (Sandbox Code Playgroud)

Sal*_*nes 5

在您的People模型中

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

然后添加你的控制器

$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);
Run Code Online (Sandbox Code Playgroud)