2

这里有点奇怪。

我有人物和动作。Person 可以有多个 Action,而每个 Action 只属于一个 Person。我正在使用 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

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

4

2 回答 2

3

对于可能有同样问题的人,请三重检查您的模型的外壳!我错了,这就是为什么本地在mac上工作但在服务器上不行

于 2019-09-14T06:27:19.490 回答
1

所以我想我自己搞砸了这个。

我一直很懒惰,一直function datatablePersons()使用PersonsController.php旧的“计数”方法,依赖于长期失效的关系(导致 n+1,因此必须被分箱),因此actions每当调用该关系时,它都会在一个类上摇摆不定。

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

我还没有完全正确地查询(至少是雄辩的)——在这里看到这个问题:mysql join ON and AND to laravel eloquent——class not found错误肯定已经消失了。

我(大量)猜测本地机器上的类图没有被刷新,因为删除了所有被删除的东西,而生产机器每次推送都会重建,因此存在差异......?

不管怎样,这不再是问题。

于 2014-12-13T16:29:42.743 回答