#html #database #laravel-8
#HTML #База данных #laravel-8
Вопрос:
Я пытаюсь вставить значение флажка в базу данных в рамках Laravel, но не могу. Я продолжаю получать следующую ошибку.
Попытка присвоить свойство ‘record_id3’ не-объекту
Контроллер
public function Postindex1(Request $request)
{
$pd4 = new Questioncourse();
$pd4 = $request->all();
$pd5 = implode(',', $request->input('hobby'));
$pd5 = implode(',', $request->input('interest'));
$pd5 = implode(',', $request->input('career'));
$pd4['hobby'] = $pd5;
$pd4['interest'] = $pd5;
$pd4['career'] = $pd5;
$pd4->record_id3 = Auth::user()->id;
$pd4->save();
return redirect('/question')->with('success',
'Your preferences have been saved!');
}
Миграция
Schema::create('questioncourses', function (Blueprint $table) {
$table->id();
$table->integer('record_id3')->unsigned();
$table->foreign('record_id3')->references('id')->on('users');
$table->string('hobby');
$table->string('interest');
$table->string('career');
$table->timestamps();
});
Комментарии:
1. Работает ли $ pd4[‘record_id3’] = Auth::user()->id;?
Ответ №1:
В вашем коде есть некоторые ошибки :
$pd4 = new Questioncourse(); // Here you instanciate the Questioncourse Model
$pd4 = $request->all(); // Here you discard the value of $pd4 and change it with an Array
// containing the $request data
Итак, у вас больше нет экземпляра Questioncourse
, и, следовательно, вы не можете использовать методы calss или атрибуты (например record_id3
).
Что вам нужно сделать :
- Вам не нужно
$pd4 = $request->all();
, удалите его, - Используйте разные переменные для каждой группы флажков (не только
$pd5
!), - Используйте мутаторы для установки значений атрибутов модели, поэтому ваш окончательный код должен быть таким :
public function Postindex1(Request $request){ $pd4 = new Questioncourse(); // $pd4 = $request->all(); There is no need for this $hobby = implode(',', $request->input('hobby')); $interest = implode(',', $request->input('interest')); $career = implode(',', $request->input('career')); $pd4->hobby = $hobby; $pd4->interest = $interest; $pd4->career = $career; $pd4->record_id3 = Auth::user()->id; $pd4->save(); return redirect('/question')->with('success', 'Your preferences have been saved!'); }