Cakephp 找到连接两列
Cakephp find joining two columns
我有一个 BD,其中包含具有日期和月份字段的人员,如下所示:
人 1(日 = 5;月 = 3)
person2(日 = 2;月 = 12)
我必须在 2 个日期之间执行查找,例如,我需要 01/03 和 01/06 之间的所有人 (day/month),但我不知道如何执行。
我尝试使用单独的条件,如下所示:
$conditions['People.day >='] = dayA;
$conditions['People.month >='] = monthA;
$conditions['People.day <='] = dayB;
$conditions['People.month <='] = monthB;
但是,这不正确,因为它找到了日期和月份,我的意思是,它找到了 monthA 和 monthB 之间的人以及 dayA 和 dayB 之间的人,相反,我需要的是 dayA/monthA 和 [= 之间的人39=]
我想我必须做某种 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'
));
最好改变你的table。使用 DATE
字段,您的 SQL 查询将是:
SELECT *
FROM dbname.People
WHERE People.date BETWEEN '1999-03-01' AND '1999-06-01';
在您的人员模型中
public $virtualFields = array(
'month_day' => 'CONCAT(People.month, "-", People.day)'
// 'month_day' => 'CONCAT(People.day, "/", People.month)'
);
然后添加你的控制器
$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);
我有一个 BD,其中包含具有日期和月份字段的人员,如下所示:
人 1(日 = 5;月 = 3)
person2(日 = 2;月 = 12)
我必须在 2 个日期之间执行查找,例如,我需要 01/03 和 01/06 之间的所有人 (day/month),但我不知道如何执行。
我尝试使用单独的条件,如下所示:
$conditions['People.day >='] = dayA;
$conditions['People.month >='] = monthA;
$conditions['People.day <='] = dayB;
$conditions['People.month <='] = monthB;
但是,这不正确,因为它找到了日期和月份,我的意思是,它找到了 monthA 和 monthB 之间的人以及 dayA 和 dayB 之间的人,相反,我需要的是 dayA/monthA 和 [= 之间的人39=]
我想我必须做某种 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'
));
最好改变你的table。使用 DATE
字段,您的 SQL 查询将是:
SELECT *
FROM dbname.People
WHERE People.date BETWEEN '1999-03-01' AND '1999-06-01';
在您的人员模型中
public $virtualFields = array(
'month_day' => 'CONCAT(People.month, "-", People.day)'
// 'month_day' => 'CONCAT(People.day, "/", People.month)'
);
然后添加你的控制器
$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);