Почему я получаю «Аргумент 1, передаваемый в Illuminate \ Database \ Grammar :: parameterize (), должен иметь тип массива, заданная строка» - PullRequest
1 голос
/ 01 апреля 2020

Я получил эту ошибку при работе, когда я использую MySQL вместо SQLite. Я получил ошибку, которой раньше никогда не получал.

Когда я пытаюсь отправить данные через форму, я получаю следующее исключение:

Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given

Вот код, который я использую для помещения данных внутри базы данных:

public function store(Request $request)
    {
        if(isset($request['recommended'])) {
            $request['recommended'] = true;
        } else {
            $request['recommended'] = false;
        }

        $validated = $request->validate([
            'title' => 'required|string',
            'recommended' => 'required|boolean',
            'us' => 'string',
            'ca' => 'string'
        ]);
        $item = new Item();
        $item->fill($validated);
        $item->save();
        $validated['item_id'] = $item->id;
        ItemLink::create($validated);
        return redirect()->route('items.index');
    }

Кажется, что произошла ошибка в строке $ item-> save ();

Я попытался вывести свою переменную $ validated, вот ее содержимое:

array:4 [
  "title" => "Echo Show 8"
  "recommended" => false
  "us" => "asdaksjdkasj"
  "ca" => "asdasdsad"
]

Я понял, что должен передать массив, но я просто не понимаю, почему и как ..

1 Ответ

0 голосов
/ 03 апреля 2020

Проблема была в модели предмета. У меня было собственное защищенное свойство с именем $ attribute, которое было массивом. Я использовал его, чтобы прикрепить некоторые свойства, когда выбирал объект.

Однако по причине, которую я до сих пор не понимаю, Laravel попытался использовать его в качестве значения базы данных. Мне просто нужно было указать свойство как "publi c", и все работало правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...