CakePHP什么都不选

时间:2011-11-18 15:05:47

标签: php cakephp cakephp-1.3

我有一个Model::find()调用,正在生成一个我从未见过的SQL警告。我希望别人拥有并且可以通过指向正确的方向来节省我一些时间。这是错误:

SELECT  FROM `fica_alternative_plans` AS `FicaAlternativePlan`   
 WHERE `FicaAlternativePlan`.`district_id` = '4ec642e2-8270-4b74-b50d-9ca2147402e8'

很容易看到错误(选择列表中没有字段),当然,但我想知道我是如何进入这个位置的。 Model::find()调用发生在DistrictsController。正如你在下面所看到的,有很多相关的模型被包含在内,只有少数(被注释​​掉的那些)以及这个错误。

$district = $this->District->find(
  'first',
  array(
    'contain'   => array(
      '403bServiceModel' => array( 'ServiceProvider' => array( 'Address' ) ), 
      '457bServiceModel' => array( 'ServiceProvider' => array( 'Address' ) ), 
      'BusinessOfficer',
      'County',
      'FicaAlternativePlan', //  => array( 'ServiceProvider' => array( 'Address' ) ), 
      'PayrollContact',
      'PrimaryContact',
      // 'Section125Plan' => array( 'ServiceProvider' => array( 'Address' ) ), 
      // 'SpecialFinalPayPlan' => array( 'ServiceProvider' => array( 'Address' ) ), 
      // 'VebWorksitePlan' => array( 'ServiceProvider' => array( 'Address' ) ), 
      'School' => array(
        'order' => array( 'School.name' ),
        'PhysicalAddress'
      ),
      'Superintendent',
      'UnionPresident',
    ),
    'conditions' => array( 'District.id' => $id ),
  )
);

这种关联非常标准,所以我不确定哪种情况会导致这种情况。很明显,我有点胖,但我现在没有看到它。

感谢。

更新

我应该添加District hasOne FicaAlternativePlan(对于发出警告的其他每个人都相同,但403bServiceModel457bServiceModel的工作正常也是如此。

1 个答案:

答案 0 :(得分:0)

哎呀,找到了。

失败的模型不直接扩展AppModel,但有一个扩展它的超类(Plan)。看起来,超类用于分组,因此其$useTable设置为false,失败的模型继承该值。其他类扩展了相同的超类,但是在某种程度上它们都是非标准的,无论如何都要求覆盖$useTable属性 - 这就是所有没有失败的原因。

如果不明显,答案是设置$useTable值以覆盖超类中的false值。

感谢您的帮助。