【发布时间】:2015-01-26 15:11:21
【问题描述】:
我遇到了一个非常奇怪的问题。我在本地计算机上使用 XAMPP,一切正常。但是当我将它上传到我的服务器时,突然ContainableBehavior 停止识别关联。
Cake 的版本:2.5.6
这里是 XAMPP 的 phpinfo(): http://pastebin.com/DeZWMh42
这是我服务器的phpinfo(): http://pastebin.com/rtZ0kTAM
两个位置都有完全相同的文件和数据库。
这是我遇到的错误:
警告 (512):模型“Certificado”未与模型关联 “Usuario” [CORE/Cake/Model/Behavior/ContainableBehavior.php,第 342 行]
警告 (512):模型“Certificado”未与模型关联 “Alumno”[CORE/Cake/Model/Behavior/ContainableBehavior.php,第 342 行]
警告 (512):模型“Certificado”未与模型关联 “Usuario” [CORE/Cake/Model/Behavior/ContainableBehavior.php,第 342 行]
警告 (512):模型“Certificado”未与模型关联 “Alumno”[CORE/Cake/Model/Behavior/ContainableBehavior.php,第 342 行]
基本上,印象属于 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)。
印象模型:
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')
),
);
}
Usuario 的模型:
class Usuario extends AppModel {
public $hasMany = array('Certificado','Impresion');
public $actsAs = array('Containable');
}
Certificado 的型号:
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 有问题。
【问题讨论】:
-
一个非常好的格式和提出的问题,对于 [php] 标签来说相当不寻常!希望看到您在这里提出更多问题。我已经回滚了答案编辑 - 正如您猜到的那样,答案属于该行下方。要将其标记为正确回答,您可以(并鼓励您)单击问题左侧的勾号。
-
谢谢!我试图尽可能具体和彻底,因为这是一个如此奇怪的问题。好吧,不是真的,我应该想象它与 windows/linux 大小写差异有关,但我在考虑 php 配置/版本差异。无论如何,我会尽快将问题标记为已回答(它说我需要等待 2 天。)我经常使用 stackoverflow,但我从来不需要问问题,因为我总是先在这里找到答案!很棒的网站。不过我会尝试回答一些问题!
标签: php cakephp cakephp-2.0 cakephp-2.5