【问题标题】:Containable behavior only working when local可包含的行为仅在本地时有效
【发布时间】: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


【解决方案1】:

我不敢相信。

无视一切。

这个:

'className' => 'certificado',

应该是这样的:

'className' => 'Certificado',

对不起,浪费了你的时间,我是个白痴

【讨论】:

  • 时不时遇到同样的问题。不幸的是在 Windows 上开发,并在 linux 上托管
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 2013-09-05
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多