Mysql cakephp与条件
我有两张桌子 具有以下字段的Office类型:id[pk],名称,在 带有以下字段的officenames:id[pk],name,officetype_id[fk] 两种模式 Officename.phpMysql 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(
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应该使用的关系。