CakePHP ничего не выбирая - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть вызов 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, которые работают нормально).

1 Ответ

0 голосов
/ 18 ноября 2011

Argh, нашел его.

Неудачные модели не расширяют AppModel напрямую, но имеют суперкласс (Plan), расширяющий его. Суперкласс, по-видимому, используется для группировки, поэтому для его $useTable установлено значение false, и ошибочные модели наследовали это значение. Другие классы расширяют тот же суперкласс, но каждый из них в некотором роде нестандартен, и в любом случае требуется, чтобы свойство $useTable было переопределено - поэтому все не пропало.

Ответ, если это не очевидно, состоит в том, чтобы установить значение $useTable, чтобы переопределить значение false в суперклассе.

Спасибо за вашу помощь, все.

...