Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Подсказали решение на другом сайте:
your problem because your doctirne/dbal: v3 , try to downgrade to v2 , like this :- doctrine/dbal": "^2.12" this issue related with your problem :- https://github.com/doctrine/dbal/issues/4439
ошибка исчезла. все работает теперь.
Всегда есть объяснение ошибке. Надо разобраться.
Мб я предоставил мало информации?
Да вот три штуки сверху
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
Я к сожалению не знаю, что это и где прописывать
Да конечно проект работает. Другие миграции по добавлению полей работают без проблем.
А миграция с переименовыванием полей в таблице выдает ошибку.
Причем в интернете такая ошибка при переименовывании много у кого возникает, но я не смог ее победить с помощью гугла.
Удалил свою строку.
После выполнения
composer require doctrine/dbal
в файле composer.json добавилась строка
"doctrine/dbal": "^3.1",
Пытаюсь сделать миграцию и опять та же ошибка
In MySqlConnection.php line 65:
Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
Вот содержания файла миграции:
<?php
class ChangeFieldMessagesTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('messages', function (Blueprint $table) {
$table->renameColumn('username', 'name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('messages', function (Blueprint $table) {
//$table->renameColumn('name', 'login');
});
}
}
Я устанавливал Laravel через Composer.
Вот полностью мой файл с одной добавленной строчкой:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"doctrine/dbal": "^3.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.7"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
}
}
Здравствуйте,
Прохожу обучающий курс по Laravel и застрял на переименовывании столбцов таблицы.
При выполнении миграции:
php artisan migrate --path=database/migrations/messages
Выдает:
Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
Прочитал, что требуется doctrine/dbal
Я зашел в файл composer.json и дописал в нем строку
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"doctrine/dbal": "^3.0"
},
Далее запустил в терминале команду composer update
Но данные манипуляции все равно не устранили ошибку.
Подскажите, где я что упускаю?
Ребят ну подскажите куда логи пишутся?
Как авторизацию отладить?
Можно еще поинтересоваться.
Сайт открывается и просит ввести логин для входа.
После ввода сразу отдает ошибку 500.
В какую папку Laravel пишет логи? - /storage/logs/laravel.log?
у меня там даже файла нет laravel.log
Спасибо большое!!!
Здравствуйте,
На работе прилетел проект на Laravel. Версия 5.8.38.
Раньше сложнее CMS и простых php функций ничего не использовал.
Сказали развернуть тестовый полигон на xampp, но у меня пока ничего не выходит.
Отдает ошибку 500.
Можете посоветовать в какую сторону копать?
В логах xampp следующая ошибка:
[Mon May 03 14:18:29.406544 2021] [php:error] [pid 8188:tid 1968] [client 127.0.0.1:54737] PHP Fatal error: Uncaught ErrorException: Method ReflectionParameter::getClass() is deprecated in C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php:853\nStack trace:\n#0 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(853): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8192, 'Method Reflecti...', 'C:\\\\xampp\\\\htdocs...', 853)\n#1 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(816): Illuminate\\Container\\Container->resolveDependencies(Array)\n#2 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(667): Illuminate\\Container\\Container->build('App\\\\Exceptions\\\\...')\n#3 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(265): Illuminate\\Container\\Container->resolve('App\\\\Exceptions\\\\...', Array, false)\n#4 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(785): Illuminate\\Container\\Container->Illuminate\\Container\\{closure}(Object(Illuminate\\Foundation\\Application), Array)\n#5 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(667): Illuminate\\Container\\Container->build(Object(Closure))\n#6 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(615): Illuminate\\Container\\Container->resolve('Illuminate\\\\Cont...', Array)\n#7 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(767): Illuminate\\Container\\Container->make('Illuminate\\\\Cont...', Array)\n#8 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(170): Illuminate\\Foundation\\Application->make('Illuminate\\\\Cont...')\n#9 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(123): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->getExceptionHandler()\n#10 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(100): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->renderHttpResponse(Object(ErrorException))\n#11 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleException(Object(ErrorException))\n#12 {main}\n thrown in C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php on line 853
[Mon May 03 14:18:29.407544 2021] [php:error] [pid 8188:tid 1968] [client 127.0.0.1:54737] PHP Fatal error: Uncaught ErrorException: Method ReflectionParameter::getClass() is deprecated in C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php:853\nStack trace:\n#0 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(853): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8192, 'Method Reflecti...', 'C:\\\\xampp\\\\htdocs...', 853)\n#1 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(816): Illuminate\\Container\\Container->resolveDependencies(Array)\n#2 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(667): Illuminate\\Container\\Container->build('App\\\\Exceptions\\\\...')\n#3 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(265): Illuminate\\Container\\Container->resolve('App\\\\Exceptions\\\\...', Array, false)\n#4 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(785): Illuminate\\Container\\Container->Illuminate\\Container\\{closure}(Object(Illuminate\\Foundation\\Application), Array)\n#5 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(667): Illuminate\\Container\\Container->build(Object(Closure))\n#6 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(615): Illuminate\\Container\\Container->resolve('Illuminate\\\\Cont...', Array)\n#7 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(767): Illuminate\\Container\\Container->make('Illuminate\\\\Cont...', Array)\n#8 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(170): Illuminate\\Foundation\\Application->make('Illuminate\\\\Cont...')\n#9 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(123): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->getExceptionHandler()\n#10 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(100): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->renderHttpResponse(Object(ErrorException))\n#11 C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Bootstrap\\HandleExceptions.php(134): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleException(Object(ErrorException))\n#12 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleShutdown()\n#13 {main}\n thrown in C:\\xampp\\htdocs\\sveden\\www\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php on line 853
127.0.0.1 - - [03/May/2021:14:18:29 +0700] "GET / HTTP/1.1" 500 -
Вот полное решение с загрузкой на сервер и записью в базу.
public function store(Article $postModel, ArticlesAddRequest $request) //валидация данных в файле app/Http/Requests/ArticlesAddRequest.php и сохранение данных формы
{
$artcl = $postModel->create($request->all());//записываем в базу
$file = $request->file('image_file');
$filename = $file->getClientOriginalName();
$file->move('../images', $filename);//папка для загрузки изображения
if($filename)
{
$article = Article::find($artcl->id);
$article->image = 'images/'.$filename;
$article->save();
}
return redirect()->route('articles');
}
В общем разобрался. Сделал так:
public function store(Article $postModel, ArticlesAddRequest $request) //валидация данных в файле app/Http/Requests/ArticlesAddRequest.php и сохранение данных формы
{
$artcl = $postModel->create($request->all());//записываем в базу
$file = $request->file('image_file');
$filename = $file->getClientOriginalName();
$file->move('../images', $filename);//папка для загрузки изображения
if($filename)
{
$article = Article::find($artcl->id);
$article->image = 'images/'.$filename;
$article->save();
}
return redirect()->route('articles');
}
Только не спрашивайте больше, тут все ясно более чем. Даже, возможно, лучше сделаете.
У меня нет $id я не могу обратиться к модели.
Я пока делаю для формы создания статьи.
public function store(Article $postModel, ArticlesAddRequest $request)
{
$postModel->create($request->all());
$file = $request->file('image_file');
$filename = $file->getClientOriginalName();
$file->move('../images', $filename);
return redirect()->route('articles');
}
Ребят, а почему не написать это на чистом php? И кода меньше, и универсальности больше.
Одна ведь функция всего: move_uploaded_file().В общем, кому пример на чистом php?
Вот решение. Также не особо длинное:
Добавить в контролере в store()
$file = $request->file('image_file');
$filename = $file->getClientOriginalName();
$file->move('../images', $filename);
Добавить в форму в отображении:
{!! Form::label('image', 'Фотография:') . Form::file('image_file',['class' => 'form-control'])!!}
Как записать в базу данных пока не додумался.
Да в update. У меня там дефолтный request, вы вместо него ставите свой реквест
Форма тогда не отправляется. Страница перезагружается, но не меняется.
Здравствуйте,
Реализовал загрузку картинки на сервер.
public function store(Article $postModel, ArticlesAddRequest $request)
{
$postModel->create($request->all());
$file = $request->file('image_file');
$filename = $file->getClientOriginalName();
$file->move('../images', $filename);//папка
return redirect()->route('articles');
}
Как сделать чтобы имя картинки также записывалось в БАЗУ?
Я имел ввиду пример, который написан на Laravel без сторонних библиотек)
я бы тоже не отказался от примера.
думаю как реализовать загрузку фотографий в статьи.
Сделал у себя, на только что установленном фрейме. Все пашет.
Controller
Благодарю Вас. Редактирование заработало.
А в каком методе нужно дописать Request для валидации?
в update?
Mick_20 пишет:Я в общем переделал открытие формы вот так:
{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}
Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97
Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51
Вы не указали метод patch
UPD: Он находит статью для редактирования, но при отправке формы вы не указываете id статьи. В контроллере сделайте dd($request->all()). Создайте input type hidden value="{{ $article->id }}" name id
Опять выдает: MethodNotAllowedHttpException in RouteCollection.php line 218:
Mick_20 пишет:А зачем обнулять инпуты? Я же открываю статью на редактирование?
Form model binding , значения подставляются. Попробуйте как я вам в примере показал сделать. Все сработает.
Не сработало: http://hostingkartinok.com/show-image.p … 84b1d9c8aa
Я в общем переделал открытие формы вот так:
{!! Form::open(array('action' => array('ArticlesController@update', $article->id))) !!}
Теперь id статьи вроде передается: http://hostingkartinok.com/show-image.p … 972e173a97
Но ругается на роуты, если не ошибаюсь: http://hostingkartinok.com/show-image.p … f040a3ee51
А зачем обнулять инпуты? Я же открываю статью на редактирование?
}%Mick_20,
В %%Form::open%% добавьте %%'method' => 'patch'%% в итоге получится
%%(php)
{!! Form::open(['method' => 'patch', 'route' => 'articles.update']) !!}
%%
И отдельный роут для просмотра можно убрать, он в ресурсе уже есть
Отдельный роут пока не сделал. Надо разбираться.
А форма редактирования теперь другую ошибку пишет:
http://hostingkartinok.com/show-image.p … 9fa6caa1a8
Почему-то id не передается и как следствие не обновляется статья.
Контроллер:
public function update(Request $request, $id)
{
$article = Article::findOrFail($id);
$article->update($request->all());
$article->save();
return back()->with('message','Статья обновлена');
}