【问题标题】:I got this error "Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type我收到此错误“传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须属于该类型
【发布时间】:2019-09-18 07:34:36
【问题描述】:

当我尝试将数据插入到我的表中时,会发生此错误

传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 C:\xampp\htdocs\Portal\vendor\laravel\framew 中调用...

查看

<form method="post" action="{{ route('notice.store') }}">
    {{ csrf_field() }}

    <div class="form-group">
        <label for="Select Group to Post  Notice">Select Group to Post Notice </label>
        <select class="bg-white text-danger  form-control " name='GroupID[]' multiple>
            @foreach ($users as $user)
                <option value="{{ $user->GroupID }}">{{ $user->GroupID }}</option>
            @endforeach
        </select>
    </div>
    <div class="form-group">
        <label for="Enter Notice">Enter Notice</label>
        <input class="bg-white text-danger p-2 form-control form-control-sm" type="text" name="Notice" placeholder="Enter Notice">
    </div>

    <input class="btn btn-danger btn-lg px-5" type="submit" name="submit">
</form>

控制器

public function store(Request $request)
{
    $member = $request->input('GroupID');

    foreach($member as $value) {
        $storeInfo = new notice();
        $storeInfo->GroupID = $request->input('GroupID');
        $storeInfo->Notice = $request->input('Notice');
        $storeInfo->save();
    }

    return redirect('/notice');
}

【问题讨论】:

  • 如果以下帖子之一回答了您的问题请您将其标记为已接受 :) 谢谢。

标签: laravel insertion


【解决方案1】:

我想您收到此错误的原因是:

$storeInfo->GroupID = $request->input('GroupID');

$request-&gt;input('GroupID') 将返回一个数组 (name='GroupID[]') 而不是一个单独的 id。

由于您已经在遍历组 ID,因此您可以改用 GroupId 的值:

public function store(Request $request)
{
    foreach ($request->input('GroupID') as $groupId) {
        $storeInfo = new notice();
        $storeInfo->GroupID = $groupId; //<--here
        $storeInfo->Notice = $request->input('Notice');
        $storeInfo->save();
    }

    return redirect('notice');
}

【讨论】:

  • 这是我最初的想法,但错误信息似乎倒退了:“必须是类型 array, string given”。跨度>
  • @TimLewis 是的,我知道你的意思!这似乎有点违反直觉。
【解决方案2】:

尝试更改控制器逻辑

 public function store(Request $request)
{
    //
    $member=$request->input('GroupID');
    foreach($member as $value){
        $storeInfo = new notice();
        $storeInfo->GroupID = $value;
        $storeInfo->Notice = $request->input('Notice');
        $storeInfo->save();
    }

        return redirect('/notice');
}

【讨论】:

  • 你能解释一下你改变了什么以及为什么。
  • $storeInfo->GroupID = $value;
猜你喜欢
  • 2019-08-23
  • 2018-03-22
  • 2021-08-19
  • 2021-02-08
  • 1970-01-01
  • 2020-10-15
  • 2021-12-24
  • 2018-04-19
  • 1970-01-01
相关资源
最近更新 更多