laravel'class not found'生产错误

时间:2014-12-13 11:44:57

标签: php laravel laravel-4 datatables laravel-forge

这里有点奇怪。

我有人和行动。人可以拥有许多动作,而每个动作只属于一个人。我使用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();

表明我的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');
    }

我认为这些都没问题,因为它们都在本地工作。数据表在其他地方也可以正常工作,通过其他项目及其相关操作进行调用,没有任何问题。

我在生产服务器上尝试过composer dump-autoload和artisan dump-autoload,但无济于事。 Forge上的部署脚本如下:

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

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

2 个答案:

答案 0 :(得分:1)

对于可能遇到相同问题的人,请三遍检查您的模型机壳!我错了,这就是为什么在Mac上本地运行但在服务器上无法运行

答案 1 :(得分:0)

所以我想我自己就开始这个。

我一直懒惰,并function datatablePersons()使用旧的' PersonsController.php离开actions方法,依赖于长期不存在的关系(导致n + 1,因此必须被分箱),因此无论何时调用该关系,它都会在datatablePersons()类上摇摆。

其他控制器中的数据表功能(使用更清晰的'计数方法)工作正常,因此我只是重写了class not found以使用相同的方法。

我还没有得到正确的查询(至少在口才中) - 请在此处查看此问题:mysql join ON and AND to laravel eloquent - 但{{1}}错误肯定已经消失。

我(大规模地)猜测本地机器上的类图没有被刷新,因为移除了被删除的内容,而生产机器每次推送都重建,因此差异......?< / p>

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