Я делаю плагин в CakePhp и использую несколько моделей внутри плагина. Я создал эти модели с помощью консоли и запечь их. Я столкнулся с проблемой при использовании одного из них, и она появляется только с этой конкретной моделью.
Имя файла модели:
GamificationBadgeUnlockActionProgression.php
Содержание модели:
<?php
App::uses('GamificationAppModel', 'Gamification.Model');
class GamificationBadgeUnlockActionProgression extends GamificationAppModel {
function __construct() {
parent::__construct();
echo 'oleej';
exit;
}
public $belongsTo = array(
'GamificationBadgeProgression' => array(
'className' => 'GamificationBadgeProgression',
'foreignKey' => 'gamification_badge_progression_id'
),
'GamificationBadgeUnlockAction' => array(
'className' => 'GamificationBadgeUnlockAction',
'foreignKey' => 'gamification_badge_unlock_action_id'
)
);
public function addMissingProgression($missingProgression)
{
/*$this->saveMany($missingProgression, array(
'fieldlist' => array('gamification_badge_progression_id', 'gamification_badge_unlock_action_id')
));*/
}
}
В контроллере плагина у меня есть:
public $uses = array('Gamification.GamificationBadge',
'Gamification.GamificationBadgeProgression',
'Gamification.GamificationBadgeUnlockAction',
'Gamification.GamificationBadgeUnlockActionProgression',
'Gamification.GamificationBadgeUnlockType');
Все остальные модели загружаются, кроме «Gamification.GamificationBadgeUnlockActionProgression». Что очень странно. В нем есть все необходимое, и он следует соглашениям об именах и всему остальному. Он просто не загружается, так как конструктор никогда не вызывается и эхо никогда не отображается.
Когда я вызываю функцию из модели с массивом в качестве параметра:
$this->GamificationBadgeUnlockActionProgression->addMissingProgression($missingProgression);
Затем я получаю сообщение об ошибке
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'addMissingProgression' at line 1
Потому что модель не загружена.
Однако CakePhp создает волшебную модель с тем же именем, что приводит к указанной выше ошибке, потому что модель волшебным образом существует, но функция, конечно же, не существует, как и отношения.
Что мне здесь не хватает?
ClassRegistry::isKeySet('Name of your model');
- person Fazal Rasel   schedule 24.04.2014