ОБНОВЛЕНИЕ: ПРОБЛЕМА РЕШЕНА!
Я обновляю свои Laravel навыки (с использованием версии 7.13.0), следуя руководству freecodecamp.org здесь: https://www.youtube.com/watch?v=ImtZ5yENzgE&t=11889s (от 1:21:49 до 1:22:50). Когда я добираюсь до задачи добавления профиля вручную с помощью php artisan tinker , как я делал это во внешнем интерфейсе, он не может сохранить. База данных - sqlite.
ЭТО ПОЛНАЯ ОШИБКА:
Illuminate / Database / QueryException с сообщением «SQLSTATE [23000]: нарушение ограничения целостности: 19 Ошибка ограничения NOT NULL: профили .url (SQL: вставить в значения "profiles" ("title", "description", "user_id", "updated_at", "created_at") (Cool Title, Description, 1, 2020-05-29 18:41 : 02, 2020-05-29 18:41:02)) '
Моя функция в profiles_table. php в папке database \ migrations вроде нормально. Это:
public function up()
{
Schema::create('profiles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->string('url')->nullable();
$table->timestamps();
$table->index('user_id');
});
}
Профиль . php модель функция:
public function user()
{
return $this->belongsTo(User::class);
}
И Пользователь. php модель функция:
public function profile()
{
return $this->hasOne(Profile::class);
}
Итак, в терминале, после ввода php artisan tinker , я заполнил следующее до того, как он не смог сохранить:
>>> $profile = new \App\Profile();
=> App\Profile {#3056}
>>> $profile->title = 'Cool Title';
=> "Cool Title"
>>> $profile->description = 'Description';
=> "Description"
>>> $profile->user_id = 1;
=> 1
>>> $profile->save();
РЕДАКТИРОВАТЬ: это файл контроллера ProfilesController. php, если это помогает решить проблему:
<?php
namespace App\Http\Controllers;
use \App\User;
use Illuminate\Http\Request;
class ProfilesController extends Controller
{
public function index($user)
{
$user = User::find($user);
return view('home', [
'user' => $user,
]);
}
}
Все части прошли нормально, и после того, как я набрал СОХРАНИТЬ - это показало ошибку выше. Поэтому я не могу продолжать показывать новый профиль, созданный вручную.
Я искал в Google и искал здесь ответы, например, в этот вопрос и тот вопрос . Это не решило мою проблему, и другие, как мне кажется, не столь актуальны.
Что мне делать, чтобы исправить это?
Решение
Отправьте сообщение @mrhn , добавление новой нулевой таблицы + установка composer require doctrine/dbal
, как предлагается здесь: { ссылка }.