Laravel在生产中出现“找不到类”错误


laravel 'class not found' error on production

这里有点奇怪。

我有人和行动。人员可以有多个操作,而每个操作只属于一个人。我正在使用Chumper的数据表来显示人员列表,包括他们的操作计数。

自从迁移到生产(锻造)服务器后,我得到了

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();

这表明这是我的关系有问题:

# /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');
    }

但是,我认为这些都很好,因为它都可以在本地工作。数据表在其他地方也可以正常工作,毫无问题地调用其他项目及其相关操作。

我已经在生产服务器上尝试了作曲家转储自动加载和工匠转储自动加载,但无济于事。锻造上的部署脚本如下:

git pull origin master
composer install
php artisan migrate --env=production

我无法判断这是配置问题,数据库问题,代码问题还是其他问题。我已经回到了许多类似的问题,但没有跳出来。任何帮助非常感谢。

对于可能有相同问题的人,请三重检查模型的大小写!我错了,这就是为什么 mac 本地工作但不在服务器上工作的原因

所以我想我自己也讨厌这个。

我一直很懒,function datatablePersons() PersonsController.php使用旧的"计数"方法,依靠早已不存在的关系(导致 n+1,所以必须进行分箱),因此每当调用该关系时,它都会在actions类上摇摆不定。

其他控制器中的数据表函数(使用更干净的"计数"方法)工作正常,所以我刚刚重写了datatablePersons()以使用相同的方法。

我还没有完全正确查询(至少是雄辩的)-在这里看到这个问题:mysql加入ON和AND以雄辩 - 但class not found错误肯定已经消失了。

我(大量)猜测本地机器上的类映射没有被刷新,因为删除了任何内容,而生产机器每次推送都会重建,因此差异......?

无论哪种方式,这都不再是问题。