我想在 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;
这可能吗?
我想在 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;
这可能吗?
您可以使用该Model.query()
方法在 CakePHP 中进行任意 SQL 查询。例如,在控制器中:
$sql = ...your sql here...
$results = $this->ModelName->query($sql);
如果您尝试使用 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 约定,如果您正在迁移或集成您的项目,这是可以理解的。如果您现在开始,您可能想要重命名它们。