这里有点奇怪。
我有人和行动。人可以拥有许多动作,而每个动作只属于一个人。我使用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
我无法判断它是配置问题,数据库问题,代码问题还是其他问题。我已经回过了许多类似的问题,但没有任何事情被跳出来。任何帮助非常感谢。
答案 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>
无论哪种方式,它都不再是问题。