Правя плъгин в CakePhp и използвам множество модели в него. Създадох тези модели с помощта на конзолата и ги изпекох. Сблъсках се с проблем, когато използвах 1 от тях и се появява само с този конкретен модел.
Името на файла на модела:
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