У меня очень странная проблема. Я работаю с XAMPP на моем локальном компьютере, и все работает отлично. Но когда я загружаю его на свой сервер, вдруг ContainableBehavior
перестает распознавать ассоциации.
Версия торта: 2.5.6
Вот XAMPP phpinfo()
: http://pastebin.com/DeZWMh42
А вот мой сервер phpinfo()
: http://pastebin.com/rtZ0kTAM
Оба местоположения имеют одинаковые файлы и базы данных.
Это ошибки, которые я получаю:
Предупреждение (512): Модель «Certificado» не связана с моделью
«Усуарио» [CORE / Cake / Model / Behavior / ContainableBehavior.php, строка 342]Предупреждение (512): Модель «Certificado» не связана с моделью
«Выпускник» [CORE / Cake / Model / Behavior / ContainableBehavior.php, строка 342]Предупреждение (512): Модель «Certificado» не связана с моделью
«Усуарио» [CORE / Cake / Model / Behavior / ContainableBehavior.php, строка 342]Предупреждение (512): Модель «Certificado» не связана с моделью
«Выпускник» [CORE / Cake / Model / Behavior / ContainableBehavior.php, строка 342]
По сути, Impresion принадлежит Usuario и Certificado, последний также принадлежит Usuario (может быть иным) и Alumno. Очевидно, я вырезал все не относящиеся к делу части (дайте мне знать, если вам нужно больше.)
Это где я использую ContainableBehavior
(Impresion
«s Controller
):
(Я получаю ошибку на /impresions/index
)
class ImpresionsController extends AppController {
public $components = array('Paginator');
public $uses = array('Usuario', 'Alumno', 'Certificado', 'Impresion');
public function index(){
$this->paginate = array(
'limit' => 10,
'order' => array('fecha_creacion' => 'desc'),
'contain'=>array(
'Usuario',
'Certificado' => array(
'Usuario',
'Alumno'
)
),
);
$results = $this->paginate('Impresion');
$this->set('impresiones',$results);
}
}
И в представлении я просто использую foreach($impresiones)
,
Модель Impresion:
class Impresion extends AppModel {
public $actsAs = array('Containable');
public $belongsTo = array(
'Certificado' => array(
'className' => 'certificado',
'foreignKey' => 'certificado_id',
),
'Usuario' => array(
'className' => 'Usuario',
'foreignKey' => 'usuario_id',
'fields' => array('nombre','codigo')
),
);
}
Модель Усуарио:
class Usuario extends AppModel {
public $hasMany = array('Certificado','Impresion');
public $actsAs = array('Containable');
}
Модель Сертификат:
class Certificado extends AppModel {
public $actsAs = array('Containable');
public $belongsTo = array(
'Usuario' => array(
'className' => 'Usuario',
'foreignKey' => 'usuario_id',
),
'Alumno' => array(
'className' => 'Alumno',
'foreignKey' => 'alumno_id',
)
);
public $hasMany = 'Impresion';
}
Модель выпускника:
class Alumno extends AppModel {
public $actsAs = array('Containable');
public $hasMany = 'Certificado';
}
Локальный запрос: http://pastebin.com/B5MRp3FS
Запрос к серверу: http://pastebin.com/J2H4U6Ge
Я полностью потерян здесь. Почему он отлично работает на моем компьютере, но не работает на сервере? Все остальное работает, просто ContainableBehavior
это проблемы.
Я не могу в это поверить.
Не обращай внимания на все.
Это:
'className' => 'certificado',
Должно было быть это:
'className' => 'Certificado',
Извини за тратить время, я идиот
Других решений пока нет …