0

我想在 CakePHP 2.0 中进行 MySQL 查询,如下所示:

select p.ciname HOSTNAME
    ,a.status HPSA
    ,m.status SM9
    ,p.status LDAP 
from hpsas a, hpsms m, ldaps p 
where (p.ciname = a.ciname) 
and (p.ciname = m.ciname) 
order by p.ciname;

这可能吗?

4

2 回答 2

0

您可以使用该Model.query()方法在 CakePHP 中进行任意 SQL 查询。例如,在控制器中:

$sql = ...your sql here...
$results = $this->ModelName->query($sql);
于 2012-09-21T13:46:12.410 回答
0

如果您尝试使用 cake ORM 进行此查询,我认为这将是朝这个方向迈出的一步:

$options = array();
$options['fields'] => array('p.ciname AS HOSTNAME', 'a.status AS HPSA', 'm.status AS SM9', 'p.status AS LDAP');
$options['joins'][] => array('table' => 'hpsas', 'alias' => 'a', 'conditions' => array('p.ciname = a.ciname'));
$options['joins'][] => array('table' => 'hpsms', 'alias' => 'm', 'conditions' => array('p.ciname = m.ciname'));

$result = $this->Test->find('all', $options);

这些字段和表名不符合 cake 约定,如果您正在迁移或集成您的项目,这是可以理解的。如果您现在开始,您可能想要重命名它们。

http://book.cakephp.org/1.3/en/view/901/CakePHP-Conventions

于 2012-09-21T19:57:04.383 回答