rishatss
@rishatss
Simple Developer ^)

Как сделать insert данных в БД в контроллере?

Добрый день господа.
Есть реализация формы и я хочу отловить данные которые в ней и закинуть в базу данных. Дабы мониторить все происходящее в админке.

Я не до конца понимаю как можно в данной ситуации это реализоать.
Мои наброски:
public function postContact(Request $request) {
        $this->validate($request, [
            'email' => 'required|email',
            'subject' => 'min:3',
            'message' => 'min:10',
            'infoaboutsender' => 'min:6']);

        $data = array(
            'email' => $request->email,
            'subject' => $request->subject,
            'bodyMessage' => $request->message,
            'infoaboutsender' => $request->infoaboutsender,
            'emails' => $request->emails
        );

        Mail::send('includes.contactemail', $data, function($message) use ($data){
            $message->from($data['email']);
            foreach ($data['emails'] as $selectedOption)
            {
            $message->to($selectedOption);
                Feedback::insert('feedback')->insert([
                    'name' => $data['infoaboutsender'],
                    'email' => $data['email'],
                    'subject' => $data['subject'],
                    'message' => $data['bodyMessage'],
                    'employees' => $selectedOption,
                ]);

            }
            $message->subject($data['subject']);

        });


На выходе после моей реализации вижу проблему с типизацией..
FatalThrowableError in Builder.php line 2087:
Type error: Argument 1 passed to Illuminate\Database\Query\Builder::insert() must be of the type array, string given, called in
  • Вопрос задан
  • 339 просмотров
Решения вопроса 1
zvermafia
@zvermafia
WebDev
Попробуйте так:
\DB::table('feedback')->insert([
    [
        'name'      => $data['infoaboutsender'],
        'email'     => $data['email'],
        'subject'   => $data['subject'],
        'message'   => $data['bodyMessage'],
        'employees' => $selectedOption,
    ]
]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
insert('feedback')->insert
Ответ написан
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Документация, читайте документацию...

Feedback::create([
  // массив с данными
]);


Откуда вы взяли insert?
P.S. Использование класса DB и работа с базой напрямую - плохой тон во время разработки на Laravel. Используйте Eloquent.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы