gpt4 book ai didi

CakePHP 未在生产服务器上加载与模型相关的属性

转载 作者:行者123 更新时间:2023-12-02 02:24:27 25 4
gpt4 key购买 nike

这很奇怪。

我有一个用于开发应用程序的本地服务器。我开发的一个产品评论应用程序在它上面完美运行,并利用了 Cake 的关联模型($hasMany、$belongsTo 等)。

将此应用推送到生产服务器后,它失败了。给我一条错误信息:

Notice (8): Undefined property: AppModel::$Product [APP/controllers/reviews_controller.php, line 46]

ReviewsController::home() - APP/controllers/reviews_controller.php, line 46
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83

我已经 debug()$this 并且它一如既往地显示,当本地服务器正在加载相关模型时,生产服务器不是。数据库是镜像副本(从字面上看,生产服务器是从开发数据库导入的),我可以手动加载模型,这告诉我它连接到数据库就好了。

到底发生了什么事?

更新

生产服务器的sql查询是这样的:

SELECT `Review`.`id`, `Review`.`title`, `Review`.`product_id`, `Review`.`score`, `Review`.`submitted`, `Review`.`reviewed`, `Review`.`right`, `Review`.`wrong`, `Review`.`user_id`, `Review`.`goals` 
FROM `reviews`
AS `Review`
WHERE 1 = 1
ORDER BY `Review`.`submitted` desc LIMIT 10

来自开发服务器的 sql 查询是这样的:

SELECT `Review`.`id`, `Review`.`title`, `Review`.`product_id`, `Review`.`score`, `Review`.`submitted`, `Review`.`reviewed`, `Review`.`right`, `Review`.`wrong`, `Review`.`user_id`, `Review`.`goals`, `User`.`id`, `User`.`username`, `Product`.`id`, `Product`.`name` 
FROM `reviews`
AS `Review`
LEFT JOIN `users` AS `User` ON (`Review`.`user_id` = `User`.`id`)
LEFT JOIN `products` AS `Product` ON (`Review`.`product_id` = `Product`.`id`)
WHERE 1 = 1
ORDER BY `Review`.`submitted` desc LIMIT 10

更新 2

这是错误指向的一些代码:

$title = $this->Review->Product->find( 'first', array( 'fields' => array( 'Product.name' ), 'conditions' => array( 'Product.id' => $filter ) ) );

更新 3

<?php
class Review extends AppModel {
var $name = 'Review';
var $displayField = 'title';

//The Associations below have been created with all possible keys, those that are not needed can be removed

var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Product' => array(
'className' => 'Product',
'foreignKey' => 'product_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
?>

最佳答案

我遇到了这个问题,对我来说,这是由于其中一个数据库表中缺少一个字段。我会三重检查以确保两个数据库完全相同(尽管你说它们是......):随时使用这个已有 7 年历史的应用程序来检查它们:D http://www.mysqldiff.org/

遇到这个问题的其他人谈到了文件名问题,所有文件都应该小写,所以这也可能需要检查...

关于CakePHP 未在生产服务器上加载与模型相关的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com