【问题标题】:Call to undefined method save() in laravel update code在 laravel 更新代码中调用未定义的方法 save()
【发布时间】:2018-10-16 05:44:34
【问题描述】:

在我的代码中试图更新信息,但我收到错误

Call to undefined method Illuminate\Database\Query\Builder::save()

$user_id 不是首选项表的主键。它只是一个列名

更新的控制器代码:

public function update(Request $request, preferences $preferences,$user_id)
{
 $preferences = preferences::where('user_id', $user_id);

  // $preferences = DB::table('preferences')->where('preferences.user_id','=', $user_id)->first();

  $preferences->detergent= request()->detergent;
  $preferences->fabricsoftener= request()->fabricsoftener;
  $preferences->starch= request()->starch;
  $preferences->save();
    return redirect()->route('user.home.preferences', [Auth::user()->id]);
}

在blade文件中查看代码看起来像

<form class="form-group coupon-form" action="{{ route('user.home.preferencesupdate', ['user_id' => Auth::id()]) }}" method="post">
                  {{ csrf_field() }}
                  <div class="col-md-12">

                          <div class="heading-title-alt text-left heading-border-bottom">
                                  <h4 class="text-uppercase">Cleaning preferences</h4>
                          </div>

                          @foreach($preferences as $preferences)
                          <div class="form-group">
                              <label>Detergent</label>
                              <select name="detergent" class="form-control">
                                  <option name="detergent" value="none" @if ($preferences->detergent == "none") selected @else "" @endif > None</option>
                                  <option name="detergent" value="scented" @if ($preferences->detergent == "scented") selected @else "" @endif >Scented</option>
                                  <option name="detergent" value="hypoallergenic" @if ($preferences->detergent == "hypoallergenic") selected @else "" @endif>Hypo-Allergenic</option>
                              </select>
                          </div>

                          <div class="form-group">
                              <label>Fabric Softener</label>
                              <select name="fabricsoftener" class="form-control">
                                  <option name="fabricsoftener" value="yes" @if ($preferences->fabricsoftener == "yes") selected @else "" @endif>Yes</option>
                                  <option name="fabricsoftener" value="no" @if ($preferences->fabricsoftener == "no") selected @else "" @endif>No</option>
                              </select>
                          </div>

                          <div class="form-group">
                              <label>Starch (Laundered & Press items only)</label>
                              <select name="starch" class="form-control">
                                  <option name="starch" value="none" @if ($preferences->starch == "none") selected @else "" @endif>None</option>
                                  <option name="starch" value="light" @if ($preferences->starch == "light") selected @else "" @endif>Light</option>
                                  <option name="starch" value="medium" @if ($preferences->starch == "medium") selected @else "" @endif>Medium</option>
                                  <option name="starch" value="heavy" @if ($preferences->starch == "heavy") selected @else "" @endif>Heavy</option>
                              </select>
                          </div>
                          @endforeach

                          <button class="btn btn-small btn-dark-solid full-width  " id="login-form-submit" name="login-form-submit" value="login">Update</button>
                  </div>
                </form>

请帮助我理解错误并解决它。

【问题讨论】:

    标签: laravel laravel-5 laravel-4 eloquent


    【解决方案1】:

    你应该这样做:

    $preferences = preferences::where('user_id', $user_id)
    ->update([
       'detergent'=> request()->detergent,
       'fabricsoftener'=> request()->fabricsoftener,
       'starch'=> request()->starch,
    ]);
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      查询仍处于查询构建器状态,要真正“获取”您需要使用-&gt;get() 的模型,或者在您的情况下使用-&gt;first(),它本身还没有返回模型。

      preferences::where('user_id', $user_id)-&gt;first()

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 2015-01-04
        • 2023-03-07
        • 1970-01-01
        • 2017-04-24
        • 2019-04-14
        • 1970-01-01
        • 2013-09-13
        • 2020-04-22
        相关资源
        最近更新 更多