Код: Выделить всё
Schema::create('projects', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('key')->nullable();
$table->integer('bpm')->nullable();
$table->boolean('is_collaborative')->default(false);
$table->foreignId('owner_id')->constrained('users')->cascadeOnDelete();
$table->timestamps();
});
После создания следующего метода в моей модели проекта:
Код: Выделить всё
public function owner(): BelongsTo
{
return $this->belongsTo(User::class, 'owner_id');
}
Код: Выделить всё
public function projectsOwned(): HasMany
{
return $this->hasMany(Project::class, 'owner_id');
}
Код: Выделить всё
public function store(Request $request)
{
// Validate the data input by the user.
$validatedData = $request->validate([
'title' => ['required', 'max:255'],
]);
// Create a new project.
auth()->user()->projects()->create($validatedData);
return to_route('projects.index')->with('status', __('Project created successfully!'));
}
Код: Выделить всё
General error: 1364 Field 'owner_id' doesn't have a default valueЧто я могу сделать, чтобы Laravel автоматически вставлял идентификатор аутентифицированного пользователя в поле Owner_id без необходимости добавлять Owner_id в поле Массив $fillable модели Project?
PS: У меня также есть связь «многие ко многим» между пользователями и проектами, чтобы отслеживать, кто к каким проектам имеет доступ. Вот почему я использую метод auth()->user()->projects() при попытке сохранить новый проект в базе данных.
Подробнее здесь: https://stackoverflow.com/questions/781 ... del-with-a
Мобильная версия