Mysql cakephp与条件

Mysql cakephp与条件,mysql,cakephp,Mysql,Cakephp,我有两张桌子 具有以下字段的Office类型:id[pk],名称,在 带有以下字段的officenames:id[pk],name,officetype_id[fk] 两种模式 Officename.php class Officename extends AppModel { public $name = 'Officename'; public $belongsTo = array( 'Officetype' => array(

我有两张桌子

具有以下字段的Office类型:id[pk],名称,在

带有以下字段的officenames:id[pk],name,officetype_id[fk]

两种模式 Officename.php

class Officename extends AppModel {

    public $name = 'Officename';
    public $belongsTo = array(
        'Officetype' => array(
            'className'     => 'Officetype',
            'foreignkey'=>'id'
        )
    );
Officetype.php

var $hasMany = array(
        'Officename' => array(
            'className'     => 'Officename'               

        )
    );
现在,我如何在控制器中写入连接这两个表的条件。我的条件如下:

SELECT a. * , b. *  FROM officetypes AS a, officenames AS b    
    WHERE  
        a.id =3    
    AND 
        b.officeid = a.under
你只需要这样做:

$this->Officetype->find('all');
如果您这样做:

$this->OfficeType->find('all')
您将检索所需的数据

无论如何,根据我的经验,最好使用可包含的行为,特别是如果您想扩展模型的话。使用Containable,您只能检索所需的模型。 这样做:

class OfficeType extends AppModel {

public $actsAs = array('Containable');
public $hasMany = array(
    'OfficeName
);
然后,在控制器中使用:

$this->OfficeType->find('all', array(
    'contain' => 'OfficeName',
    'conditions' => array('id' => 3)
     )

officenames表中没有officeid字段。此外,您没有正确遵循cakephp命名约定:yoir表应该是office类型和office名称,模型:OfficeName OfficeType为什么要在控制器中编写SQL代码?如果要编写SQL,为什么不在模型中添加胖模型、瘦控制器?但是,为什么不使用find函数呢?通过定义hasmany和belongsto关系,您已经建立了cakephp应该使用的关系。