Немного странный здесь.
У меня есть люди и действия. У людей может быть много действий, в то время как каждое действие принадлежит только одному человеку. Я использую Datatables Chumper’s для отображения списка людей, включая количество их действий.
После перехода на рабочий (поддельный) сервер я получаю
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR)
Class 'action' not found
при вызове данных. Показанная ошибка
/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:721
public function hasOne($related, $foreignKey = null, $localKey = null)
{
$foreignKey = $foreignKey ?: $this->getForeignKey();
$instance = new $related;
$localKey = $localKey ?: $this->getKeyName();
предполагает, что это проблема с моими отношениями hasMany:
# /models/Person.php
class Person extends Eloquent {
public function actions()
{
return $this->hasMany('Action');
}
# /models/Action.php
class Action extends Eloquent {
public function person()
{
return $this->belongsTo('Person', 'person_id');
}
Я предполагаю, что это хорошо, однако, поскольку все это работает локально. Datatables также отлично работает в других местах, без проблем вызывая другие объекты и связанные с ними действия.
Я пробовал composer dump-autoload и artisan dump-autoload на рабочем сервере, но безрезультатно. Сценарий развертывания в Forge приведен ниже:
git pull origin master
composer install
php artisan migrate --env=production
Я не могу сказать, является ли это проблемой конфигурации, проблемой базы данных, проблемой кода или чем-то еще полностью. Я вернулся через много подобных вопросов, но ничего не выпрыгнуло. Любая помощь высоко ценится.
Так что я думаю, что купил это сам.
Я был ленив и ушел function datatablePersons()
в PersonsController.php
используя старый метод ‘count’, полагаясь на давно не существовавшие отношения (которые привели к n + 1, поэтому пришлось его связать), следовательно, он колеблется над actions
класс всякий раз, когда эти отношения были призваны.
Функции с данными в других контроллерах (с более чистым методом ‘count’) работают нормально, поэтому я просто переписал datatablePersons()
использовать тот же метод.
Я еще не совсем правильно понял запрос (по крайней мере, в красноречивом) — посмотрите этот вопрос здесь: MySQL присоединиться к ON и AND, чтобы laravel красноречивый — но class not found
ошибка конечно ушла.
Я (в широком смысле) предполагаю, что карта классов на локальной машине не была сброшена, поскольку все, что было удалено, было удалено, в то время как производственная машина перестраивалась при каждом нажатии, отсюда и несоответствие …?
В любом случае, это больше не проблема.
Других решений пока нет …