Cakephp 来自没有任何关系的多个表的数据
我有两个模型PrintEvent和SocialeEvent,有两个表,如下所示:- 打印事件:-Cakephp 来自没有任何关系的多个表的数据,cakephp,Cakephp,我有两个模型PrintEvent和SocialeEvent,有两个表,如下所示:- 打印事件:- ╔════╤════════════════════════╤════════════╗ ║ id │ name │ date ║ ╠════╪════════════════════════╪════════════╣ ║ 1 │ Important print event1 │ 01/05/2015 ║ ╟
╔════╤════════════════════════╤════════════╗
║ id │ name │ date ║
╠════╪════════════════════════╪════════════╣
║ 1 │ Important print event1 │ 01/05/2015 ║
╟────┼────────────────────────┼────────────╢
║ 2 │ Important print event2 │ 02/05/2015 ║
╟────┼────────────────────────┼────────────╢
║ 3 │ Important print event3 │ 03/05/2015 ║
╚════╧════════════════════════╧════════════╝
社交活动:-
╔════╤═════════════════════════╤════════════╗
║ id │ name │ date ║
╠════╪═════════════════════════╪════════════╣
║ 1 │ Important social event1 │ 01/05/2015 ║
╟────┼─────────────────────────┼────────────╢
║ 2 │ Important social event2 │ 02/05/2015 ║
╟────┼─────────────────────────┼────────────╢
║ 3 │ Important social event3 │ 03/05/2015 ║
╚════╧═════════════════════════╧════════════╝
现在,我有了一个带有“event date from”和“event date to”字段的搜索表单,希望使用一种模型或任何其他方法显示两个表中的记录列表,但不希望使用两种模型使用单独的查询。
谢谢。两张表之间没有关系吗?然后,您只需执行两个查询即可 或者干脆做:
class yourFirstModel extends AppModel{
$public $hasMany = array('secondModel');
}
然后
当您查询这些模型中的任何一个时,您应该能够从这两个表中获取数据
好的,如果您不想使用我的第一种方法,这里有另一种使用join的方法
您可以修改查询以满足自己的规范
$this->PrintEvent->find('all', array(
'joins' => array(
array(
'table' => 'social_events',
'alias' => 'EventJoin',
'type' => 'INNER',
'conditions' => array(
'EventJoin.date = PrintEvent.date'
)
)
),
'conditions' => array(
'PrintEvent.date' => $searchConditions
),
'fields' => array('EventJoin.*', 'PrintEvent.*'),
'order' => 'PrintEvent.date DESC'
));
请注意,这必须在控制器中。
请让我知道这是否有帮助。据我所知,CakePHP模型每次只能表示一个表。您可能需要使用
query()
来执行联合SQL:-
$this->PrintEvent->query('SELECT id, name, date FROM print_events UNION SELECT id, name, date FROM social_events');
我通常会建议不要使用这种方法,但我相信框架并不直接支持您试图实现的目标。您使用的是什么版本的Cake,您尝试过什么?发布您的一些代码。但是您使用的是什么版本的Cake?在数据库查询方面,CakePHP 2与CakePHP 3非常不同!实际上,我有两个独立的表,这些表之间没有关系。我想根据日期从两个表中搜索。我不想对它使用单独的查询,而是希望使用单个查询按日期对两个表中的记录进行排序。
$this->PrintEvent->query('SELECT id, name, date FROM print_events UNION SELECT id, name, date FROM social_events');