我从laravel 5.3升级到5.4 . 现在我得到 Reflection Exception Class eloquent.saving: App\model_name does not exist . 其他一切看起来都很好 . 我可以查询,检索它,在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();
}
}
没有自定义代码已更改 . 只是升级(添加了升级指南修补程序的适用更改) . 我已经清除了缓存,清除了编译视图,完成了优化,dump-autoload ...工作 . 这是laravel 5.5的中间步骤 . 但如果我直接升级到5.5,也会发生同样的情况不知道从哪里开始寻找 .
来自评论的更新:
创建一个新对象会引发Carbon异常 . 在模型中设置$ timestamps = false可以消除Carbon错误,我可以创建新模型并保存它 . 但是,如果我找到相同的记录并尝试保存它,我会再次获得反射异常 .
更新
如果我降级回5.3,一切都会立即开始工作 .
1 回答
EventServiceProvider中有一个事件听了“eloquent.saving” - 完全被遗忘了 . 5.4中的事件处理方式发生了变化(通过laracast Talinon)