laravel 语法::parameterize()必须是数组类型

ecfdbz9o  于 2023-05-01  发布在  其他
关注(0)|答案(5)|浏览(130)

我得到了这个错误
传递给Illuminate\Database\Grammar::parameterize()的参数1必须是array,string给定,
当我尝试在视图中使用选择表单添加array[]时。但是当我删除它时,我没有得到任何错误。我只是想在选择列表中输入一个多值。我是否需要使用foreach来实现这个功能?

查看

<div class = "form-group {{ $errors->has('approver') ? ' has-error' : '' }}">

    <label for = "approver" class = "control-label">Approver:</label>

    <select name = "approver[]" multiple class = "form-control select2-multi">

        @foreach ($approver as $list)
            <option value = "{{ $list->id }}">{{ $list->username }}</option>
        @endforeach

    </select>

    @if ($errors->has('approver'))
        <span class = "help-block">{{ $errors->first('approver') }}</span>
    @endif

</div>

控制器

public function getDocuments()
{
   $approver = DB::table('users')->where('id', '!=', Auth::id())->get();

   return view ('document.create')->with('approver', $approver);
}

public function postDocuments(Request $request)
{

    $this->validate($request,
    [
        'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255',
        'content' => 'required',
        'category' => 'required',
        'recipient' => 'required',
        'approver' => 'required',
    ]);     

    $document = new Document();
    $approve = new Approve();
    $user = Auth::user();
                                //Request in the form
    $document->title = $request->title;
    $document->content = $request->content;
    $document->category_id = $request->category;
    $approve->approver_id = $request->approver;

    $approve->save();

    $document->save();

    $document->sentToApprovers()->sync([$approve->id],false);

}

更新

我死了,转储了$approver变量,并给出了一个值数组。

也死和转储$request正如你在这里看到的,我在我的选择列表中输入了45的id。

deikduxw

deikduxw1#

好吧,你的问题是你试图将一个数组保存为一个奇异值,而你需要迭代批准者。
将您的控制器逻辑更改为:

foreach ($request->approver as $approver) {
    $approve              = new Approve();
    $approve->approver_id = $approver;
    $approve->save();

    $document->sentToApprovers()->sync([$approve->id],false);
}
jecbmhm3

jecbmhm32#

在我的情况下,我想插入批量数据,因此我得到了错误。然后我用了
User::insert($arrayData)
我受够了。

6gpjuf90

6gpjuf903#

我得到这个错误是因为我覆盖了模型中的构造函数。如果这样做,请确保传递arguments数组:

public function __construct(array $attributes = [], $something_else)
  {
    parent::__construct($attributes);

    //...
    $this->something_else = $something_else;
  }
oug3syen

oug3syen4#

在我的情况下,我没有提到的名字:-

$request->input();

所以我就换了

$request->input("name");

那么它的作品

balp4ylt

balp4ylt5#

当你尝试将数组保存到JSON字段时,也可能发生这种情况: www.example.com

相关问题