Cakephp 来自没有任何关系的多个表的数据

Cakephp 来自没有任何关系的多个表的数据,cakephp,Cakephp,我有两个模型PrintEvent和SocialeEvent,有两个表,如下所示:- 打印事件:- ╔════╤════════════════════════╤════════════╗ ║ id │ name │ date ║ ╠════╪════════════════════════╪════════════╣ ║ 1 │ Important print event1 │ 01/05/2015 ║ ╟

我有两个模型PrintEvent和SocialeEvent,有两个表,如下所示:-

打印事件:-

    ╔════╤════════════════════════╤════════════╗
    ║ 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');