Stack Overflow на русском Asked by RizONE on January 1, 2021
Модель организована с 2я внешними ключами:
public function up()
{
Schema::create('workers', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
$table->foreignId('organization_id')->constrained();
$table->boolean('active');
$table->timestamps();
});
}
в шаблоне выводятся поля для пользователя и организации для последующего выбора
<label for="user_id" class="block text-sm font-medium text-gray-700">Пользователь</label>
<select id="user_id" name="user_id" autocomplete="country" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
@foreach($users as $user)
<option value="{{ $user->id }}">{{ $user->name }}</option>
@endforeach
</select>
обрабатывает это все одна функция
ublic function store() {
$this->validate([
'user_id' => 'required',
'organization_id' => 'required',
]);
Worker::updateOrCreate(['id' => $this->worker_id], [
'user_id' => $this->user_id,
'organization_id' => $this->organization_id,
'active' => $this->active
]);
$this->closeModal();
$this->resetInputFields();
}
в результате получаю ошибку типа
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or
update a child row: a foreign key constraint fails (bill
.workers
,
CONSTRAINTworkers_user_id_foreign
FOREIGN KEY (user_id
)
REFERENCESusers
(id
)) (SQL: insert intoworkers
(user_id
,
organization_id
,active
,updated_at
,created_at
) values (0, 0,
1, 2020-12-19 18:18:43, 2020-12-19 18:18:43))
хотя значения полей user_id organization_id передаются корректно. Подставляются 0 и 0. Как это вылечить?
Вопрос снимается. Ничего делать не надо. Как я понял, вся проблема была в правильном написании шаблона, а именно за место name нужно писать wire:model
Answered by RizONE on January 1, 2021
Вероятно у вас в миграции отсутствует nullable перед constrained. У вас вряд ли есть пользователь и организация с id 0.
Answered by DKWBL on January 1, 2021
use IlluminateHttpRequest;
public function store(Request $request) {
$this->validate([
'user_id' => 'required',
'organization_id' => 'required',
]);
Worker::updateOrCreate(['id' => $request->worker_id], [
'user_id' => $request->user_id,
'organization_id' => $request->organization_id,
'active' => $request->active
]);
$this->closeModal();
$this->resetInputFields();
}
Answered by Knyaz71 on January 1, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP