【发布时间】:2018-04-15 02:23:25
【问题描述】:
我已经从 laravel 5.3 升级到 5.4。现在我得到 Reflection Exception Class eloquent.saving: App\model_name 不存在。 其他一切看起来和工作正常。我可以查询它、检索它、在 Vue 浏览器中显示它——只是保存部分非常糟糕。每个模型及其各自的控制器都会发生这种情况。
以最简单的模型为例:
型号
namespace App;
use Illuminate\Database\Eloquent\Model;
class Bank extends Model
{
protected $guarded = ['id'];
}
控制器
namespace App\Http\Controllers;
use App;
use App\Bank;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function test1(Request $request) {
/** @var \App\Bank $bank */
// get record
$bank = Bank::first();
// change data
$bank->bic = "xxx";
// dump it - looks ok
dump($bank);
// this throws reflection error
$bank->save();
}
}
没有更改任何自定义代码。只是升级(并添加了升级指南 + 修补程序的适用更改)。我已经清除了缓存,清除了编译视图,完成了优化,转储自动加载……这些作品。 这是 laravel 5.5 的中间步骤。但是如果我直接升级到 5.5,也会发生同样的情况。 不知道从哪里开始寻找。
来自 cmets 的更新:
创建新对象会引发 Carbon 异常。在模型中设置 $timestamps = false 可以消除 Carbon 错误,我可以创建新模型并保存它。但是,如果我找到相同的记录并尝试保存它,我会再次收到反射异常。
更新
如果我降级回 5.3 ,一切都会立即开始工作。
【问题讨论】:
-
你可以新建还是出现同样的错误?
-
你的模型确定在 App 文件夹的根目录下吗?
namespace App; -
@kerrin 。是的,模型在正确的位置。关于第二条评论……我们正在取得进展。我实际上还没有尝试创建一个。如果它尝试做 new Bank() ,我得到 Carbon 错误: DateTime::__construct(): Failed to parse time string (
标签: php laravel-5.4 laravel-eloquent