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。好像条件实际上并不重要。 (对我来说)很奇怪。
谢谢

这里可能会发生一些事情:

  • 首先尝试清除模型缓存。如果您不知道如何使用cake控制台,只需删除/tmp/cache/model文件夹中的文件即可

  • 预算
    模型后面的表没有您要引用的列。或者他们的名字有拼写错误。在这种情况下,当你建立你的条件时,蛋糕不会使用它们

  • 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/“表类的定义方式”:无法准确理解您的意思。