Mysql 在控制器中,执行指定基本条件的查找,但cakephp生成的查询不';不符合条件
在控制器中:Mysql 在控制器中,执行指定基本条件的查找,但cakephp生成的查询不';不符合条件,mysql,cakephp,find,Mysql,Cakephp,Find,在控制器中: $budget = $this->Budget->find('first', array('conditions' => array( "copros_id" => $this->Session->read('Copro.id'), "typebudgets_id" => $typebudget['Typebudget']['id'],
$budget = $this->Budget->find('first',
array('conditions' => array(
"copros_id" => $this->Session->read('Copro.id'),
"typebudgets_id" => $typebudget['Typebudget']['id'],
"exercices_id" => $this->Session->read('Exercice.id'))));
生成sql:
SELECT `Budget`.`id`,
`Budget`.`created`,
`Budget`.`modified`,
`Budget`.`title`,
`Budget`.`statusbudgets_id`,
`Budget`.`typebudgets_id`,
`Budget`.`copros_id`,
`Budget`.`visible`,
`Budget`.`exercices_id`
FROM `default_schema`.`budgets` AS `Budget`
WHERE `Budget`.`typebudgets_id` = ('466b50a5-4736-11e6-a160-00163ee3b504')
该模型包括:
public $belongsTo = array(
'StatusBudget' => array(
'className' => 'StatusBudget',
'foreignKey' => 'statusbudgets_id'
),
'Exercice' => array(
'className' => 'Exercice',
'foreignKey' => 'exercices_id'
),
'Typebudget' => array(
'className' => 'Typebudget',
'foreignKey' => 'typebudgets_id'
),
'Copro' => array(
'className' => 'Copro',
'foreignKey' => 'copros_id'
),
);
在构建查询时,cakephp(2)似乎忽略了find中的条件;在查找中指定不同的条件会产生相同的sql。好像条件实际上并不重要。
(对我来说)很奇怪。
谢谢这里可能会发生一些事情:
预算
模型后面的表没有您要引用的列。或者他们的名字有拼写错误。在这种情况下,当你建立你的条件时,蛋糕不会使用它们budget
的db表具有所有必需的列,但表类的定义方式可能会干扰从数据库正确读取表结构考虑到伊利亚·潘迪亚的回答,我试图更精确地说明我的情况:
$budget = $this->Budget->find('first',
array('conditions' => array(
"Budget.copros_id" => $this->Session->read('Copro.id'),
"Budget.typebudgets_id" => $typebudget['Typebudget']['id'],
"Budget.exercices_id" => $this->Session>read('Exercice.id'))));
现在生成的sql是我所期望的:
SELECT `Budget`.`id`, ...
FROM `default_schema`.`budgets` AS `Budget`
LEFT JOIN `default_schema`.`status_budgets` AS `StatusBudget` ON (`Budget`.`statusbudgets_id` = `StatusBudget`.`id`)
LEFT JOIN `default_schema`.`exercices` AS `Exercice` ON (`Budget`.`exercices_id` = `Exercice`.`id`)
LEFT JOIN `default_schema`.`typebudgets` AS `Typebudget` ON (`Budget`.`typebudgets_id` = `Typebudget`.`id`)
LEFT JOIN `default_schema`.`copros` AS `Copro` ON (`Budget`.`copros_id` = `Copro`.`id`)
其中Budget
copros_id
='5af2bda8-97d0-403a-ad96-4cf1ac171864'
和Budget
typebudgets\u id
=“466b50a5-4736-11e6-a160-00163ee3b504”
和预算
练习id='5af2c13b-43d0-412f-97d9-4752ac171864'限制1
谢谢大家! 感谢您花时间:1/模型缓存已清除2/表预算中的列没有问题:创建表
预算(id
varchar(36)不为空,created
datetime默认为空,modified
datetime默认为空,title
varchar(45)默认为空,statusbudgets\u id
varchar(36)不为空,typebudgets\u id
varchar(36)不为空,varchar(36)不为空,visible
varchar(1)默认为空,exercies\u id
varchar(36)不为空)引擎=InnoDB默认字符集=1;3/“表类的定义方式”:无法准确理解您的意思。