Я обновился с laravel 5.3 до 5.4. Теперь я получаю Класс исключения отражения eloquent.saving: приложение \ имя_модели не существует.
Все остальное выглядит и работает отлично. Я могу запросить его, получить его, отобразить в просмотре 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.
Понятия не имею, с чего начать.
Обновление из комментариев:
Создание нового объекта вызывает исключение Carbon. Установка $ timestamps = false в модели избавляет от ошибки Carbon, и я могу создать новую модель и сохранить ее. Однако, если я найду ту же запись и попытаюсь ее сохранить, я снова получу исключение отражения.
Обновить
Если я вернусь к версии 5.3, все сразу начнет работать.
В EventServiceProvider было событие, которое слушало «eloquent.saving» — и было полностью забыто. Произошло изменение в том, как события обрабатываются в 5.4 (через Laracast Talinon)
Других решений пока нет …