Как автоматически вставить идентификатор пользователя аутентификации при создании новой модели с внешним ключом в LaravePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как автоматически вставить идентификатор пользователя аутентификации при создании новой модели с внешним ключом в Larave

Сообщение Anonymous »

В моем проекте Laravel есть таблица «проекты». Миграция выглядит примерно так:

Код: Выделить всё

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();
});
Я хочу, чтобы поле Owner_id ссылалось на идентификатор пользователя, чтобы знать, кто является владельцем проекта (поскольку проекты будут совместными и несколько пользователей будут иметь к ним доступ). ).
После создания следующего метода в моей модели проекта:

Код: Выделить всё

public function owner(): BelongsTo
{
return $this->belongsTo(User::class, 'owner_id');
}
И следующий метод в моей модели пользователя:

Код: Выделить всё

public function projectsOwned(): HasMany
{
return $this->hasMany(Project::class, 'owner_id');
}
Я реализовал функцию магазина в своем ProjectController:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»