Das ist eine seltsame Sache.
Ich habe einen lokalen Server, auf dem ich Anwendungen entwickle. Eine von mir entwickelte Produktbewertungs-App funktioniert darauf einwandfrei und nutzt die assoziative Modellierung von Cake ($hasMany, $belongsTo, et. al.).
Nachdem ich diese Anwendung auf einen Produktionsserver hochgeladen habe, schlägt sie fehl. Ich erhalte eine Fehlermeldung:
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
Ich habe debug()
'd $this
und es zeigt sich ganz deutlich, dass der lokale Server die zugehörigen Modelle lädt, der Produktionsserver jedoch nicht. Die Datenbanken sind Spiegel Duplikate (buchstäblich, der Produktionsserver wurde von der Dev-DB importiert), und ich kann manuell Modelle laden, die mir sagt, es ist die Verbindung zu der DB einfach gut.
Was um alles in der Welt ist hier los?
UPDATE
Die Sql-Abfrage vom Produktionsserver lautet wie folgt:
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
Die Sql-Abfrage vom Dev-Server lautet wie folgt:
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
UPDATE 2
Hier ist ein Teil des Codes, auf den die Fehler hinweisen:
$title = $this->Review->Product->find( 'first', array( 'fields' => array( 'Product.name' ), 'conditions' => array( 'Product.id' => $filter ) ) );
UPDATE 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' => ''
)
);
}
?>