【问题标题】:Laravel 5 Update existing in databaseLaravel 5更新数据库中现有的
【发布时间】:2016-06-22 07:00:40
【问题描述】:

我正在尝试使用引导模式中的表单更新表中的现有行。但是当我尝试它时没有任何改变。我有一个带有汽车列表的 html 表格,在每一行中都有一个“更改状态”按钮,该按钮使用 id="myModal_{{ $car->id }}" 打开引导模式,其中包含用于编辑维修中汽车状态的表单。

这是我的模态:

<!-- Modal -->
<div class="modal fade" id="myModal_{{ $car->id }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Breyta stöðu bíls</h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <h3>Breyta stöðu fyrir {{ $car->LicencePlate }}</h3>
        </div>
            {!! Form::open(['url' => 'create']) !!}

              <div class="form-group">
                {!! Form::label('Status', 'Status: ') !!}
                {!! Form::select('Status', [
                                  null => ' -- Veldu Stöðu bíls -- ',
                                  'Í Biðröð' => 'Í Biðröð',
                                  'Í Viðgerð' => 'Í Viðgerð',
                                  'Tilbúinn' => 'Tilbúinn'
                                  ], null, ['class' => 'form-control']) !!}
              </div>
              <div class="form-group">

              </div>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        {!! Form::submit('Skrá stöðu', ['class' => 'btn btn-primary']) !!}
      </div>
      {!! Form::close() !!}
    </div>
  </div>
</div>

CarController 中的更新方法:

public function CarEdit($id, Requests\CreateCarsRequest $request)
{
  $edit = Car::update($request->all());
  return redirect::back();
}

我到那个方法的路线:

Route::post('/dashboard', 'CarController@CarEdit');

【问题讨论】:

  • 明确传递的字段总是一个好主意。你可以这样做:$request-&gt;only('field_1, 'field_2, 'etc)

标签: php database laravel


【解决方案1】:

你应该这样做:

['action' => 'CarController@CarEdit']

另外,您使用的是mass assignment,因此您必须在您的Car 模型中填充$fillable 数组才能使其工作: https://laravel.com/docs/5.1/eloquent#mass-assignment

【讨论】:

  • 我想你指的是:['action' =&gt; 'CarController@CarEdit'] 谢谢,它有帮助。
  • 你是对的,对不起。在这种情况下,它当然应该是action。您还可以将url 用于 URL,将route 用于路由。所有这些方法都适用于 Laravel 集体表单。
【解决方案2】:

我在同事的帮助下解决了这个问题。我所做的是创建了一个名为 UpdateCarRequest 的新请求,其中 LicencePlate 字段不是唯一的。并像这样编辑了我的方法:

public function CarEdit(Requests\UpdateCarRequest $request)
{
  $edit = Car::where('LicencePlate', '=', $request->LicencePlate)->first();
  $edit->update($request->all());
  return redirect('/dashboard');
}

我还在表单中添加了一个隐藏字段,其值为$car-&gt;LicencePlate

【讨论】:

    猜你喜欢
    • 2019-05-10
    • 2016-10-19
    • 2016-04-13
    • 2015-08-05
    • 2019-05-03
    • 2016-02-10
    • 2017-01-13
    • 2016-09-20
    • 2020-02-06
    相关资源
    最近更新 更多