我有一个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
(对于发出警告的其他每个人都相同,但403bServiceModel
和457bServiceModel
的工作正常也是如此。
答案 0 :(得分:0)
哎呀,找到了。
失败的模型不直接扩展AppModel
,但有一个扩展它的超类(Plan
)。看起来,超类用于分组,因此其$useTable
设置为false,失败的模型继承该值。其他类扩展了相同的超类,但是在某种程度上它们都是非标准的,无论如何都要求覆盖$useTable
属性 - 这就是所有没有失败的原因。
如果不明显,答案是设置$useTable
值以覆盖超类中的false
值。
感谢您的帮助。