запрос cakephp 3 не выполняется

Я новичок в cakephp3. Я пытаюсь выполнить запрос ниже, но он показывает мне ошибку.

$lifeinsurances = TableRegistry::get('LifeInsurances')->find("all");
$life_insurances = $lifeinsurances->find()
    ->join([
        'table' => 'institutions',
        'alias' => 'institutions',
        'type' => 'LEFT',
        'conditions' => 'institutions.id = LifeInsurances.institute_id',
    ]);

Я исправил предыдущий запрос. Теперь я получаю только данные одной таблицы.

ИЗМЕНИТЬ

Теперь я создал ассоциацию, используя выпечку торта. Но новая ошибка, показывающая на этот раз. Ниже мой код.

public function index() { 
    $this->paginate = [
        'contain' => ['Institutions']
    ];
    $lifeInsurances = $this->paginate($this->LifeInsurances);
    $this->set(compact('lifeInsurances'));
    $this->set('_serialize', ['lifeInsurances']);
}

Внутренняя Ошибка Сервера

если я удалю

 $this->paginate = [
        'contain' => ['Institutions']
    ];
    $lifeInsurances = $this->paginate($this->LifeInsurances);

ошибка перестает показывать


person silentcoder    schedule 25.11.2016    source источник


Ответы (2)


Если у вас правильно настроены ассоциации таблиц (что должно быть автоматически, если вы использовали bake для создания кода), вы сможете просто сказать:

$lifeinsurances = TableRegistry::get('LifeInsurances')
    ->find('all')
    ->contain(['Institutions']);
person Greg Schmidt    schedule 26.11.2016
comment
У меня не было никаких ассоциаций. Могу ли я получить результаты с объединением, как мы можем сделать в торте 2.x? - person silentcoder; 26.11.2016

Если вы хотите, чтобы содержимое работало, вам необходимо определить ассоциации в соответствующих моделях (находится в папке таблицы в случае cakephp 3.x). Поскольку вы говорите, что запекли модели, убедитесь, что отношения определены в соответствующих моделях.

Это может быть причиной того, что он бросает ошибку.

Обычно, когда вы создали все таблицы в своей базе данных, вы должны запечь модели. Потому что добавление таблицы после того, как вы запечете модели, не определяет отношения в новых моделях, и вы должны явно определить это.

Взгляните на это - Как определяются ассоциации, когда код запекается в Cakephp

Также проверьте соглашения об именах внешних ключей, определенных в таблицах. Cakephp использует это соглашение об именах для определения отношений между моделями.

Кроме того, было бы здорово, если бы вы могли опубликовать журнал ошибок, чтобы узнать более точное решение вашей проблемы.

person Ankush Tanwar    schedule 29.11.2016