当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.1错误异常:preg_replace():参数不匹配,模式是一个字符串,而替换是一个数组

米嘉禧
2023-03-14

我有以下模型与填充属性:

class Job extends Model {

    protected $fillable = [
      'job_type_id',
      'recruiter_id',
      'start_at',
      'end_at',
      'job_title',
      'job_ref',
      'job_desc'

    ];

    // other stuff
 }

我有一个表格来更新作业,其中包括一些多选下拉列表,如下所示:

<form class="js-job-posting" enctype="multipart/form-data" accept-charset="UTF-8" action="http://localhost:8000/jobs/2" method="POST">
   <input type="hidden" value="PATCH" name="_method">
   <input type="hidden" value="iElj170OKBLg9THP7iETwsn34iuVhdpBX3hF98UA" name="_token">
   <div class="form-group ">
       <label for="job_title">Job title</label>
       <input id="job_title" class="form-control" type="text" name="job_title">
   </div>

   <div class="form-group ">
      <label for="industry_list">Industry</label>
      <select id="industry_list" class="form-control name="industry_list[]" multiple="" >
         <option value="1">Accounting</option>
         <option value="37">Administration</option>
          ...
       </select>
    </div>
 </form>

在我的控制器中,我有以下方法来更新作业,但我得到错误:

ErrorException in helpers.php line 671: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

似乎使用Auth::user()-

public function update(JobRequest $request, $id)
{
   $job = Job::findOrFail($id);

   Auth::user()->recruiter->jobs()->update($request->except('job_type_id'));

   $job->industries()->sync($request->input('industry_list'));

   flash()->success('Job details have been updated');

   return redirect('/job/' . $id . '/edit');
}

奇怪的是,当我排除如下行业列表时:Auth::user()-

 SQLSTATE[42S22]: Column not found: 1054 Unknown column '_method' in 'field list' (SQL: update `jobs` set `_method` = PATCH, `_token` = iElj170OKBLg9THP7iETwsn34iuVhdpBX3hF98UA,...

为什么生成的SQL包含表单中的每个字段以进行更新,包括_方法和_标记?

是否与queryBuilder忽略可填充字段有关?


共有1个答案

王凌
2023-03-14

如果只有一个字段需要更新,请使用:

->update($request->only('job_title'));

否则,应排除以下所有其他字段:

->update($request->except(['job_type_id', 'industry_list', '_method', '_token']));

对关系执行更新时,未查看“$filleble属性”。

 类似资料:
  • 本文向大家介绍JS替换字符串中字符即替换全部而不是第一个,包括了JS替换字符串中字符即替换全部而不是第一个的使用技巧和注意事项,需要的朋友参考一下 有时候用JS替换字符串时,replyText= replyText.replace("aa",""); 这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,这种方法就不能使用了。。 可以用如下方法做参考: str是目标字符串 reallyDo是

  • 问题内容: 我有一个字符串,其结构类似于:。每次来自外部源的字符串都可能有所不同。 我只想替换第一次出现的而不是其他的。可能吗? 问题答案: preg_replace的可选第四个参数是:

  • 问题内容: 我有这段代码: 它将引发不匹配的组错误。但是,如果不匹配,我想在那里添加空字符串,而不是抛出错误。我怎样才能做到这一点? 注意:我的完整代码比此示例复杂得多。但是,如果您找到更好的解决方案,如何遍历比赛并在其中添加数字,则可以共享。我的完整代码: 问题答案: 在Python 3.5之前的版本中,对Python中失败的捕获组的反向引用未使用空字符串填充。这是在bugs.python.or

  • 我想解析一个字符串,看看它是匹配整个字符串还是子字符串。我试过这个: 但我的问题是:

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 本文向大家介绍查找数组是否包含C ++中一个不匹配的字符串,包括了查找数组是否包含C ++中一个不匹配的字符串的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个字符串s和另一个字符串数组A。我们必须查找该数组是否包含与当前长度不同的字符串有一个字符差异的字符串。假设字符串像“ banana”,而数组看起来像[“ bana”,“ orange”,“ banaba”,“ banapy”],则结果