在LARAVEL 5.5中通过一次操作将表列更新为1,将其他行更新为0

时间:2019-02-05 09:07:04

标签: laravel

我对laravel还是很陌生,我正在尝试更新一个我称为STATUS的记录。在我的视图刀片中,我具有名为“设置为默认值”的操作按钮的数据列表,我想要完成的是,一旦单击“设置为默认值”,该记录的状态(列)将更新为1,其余的行应更新为0。

由于我是这个平台的新手,所以我真的不知道该怎么办。但是经过一番练习之后,我可以在没有其他条件的情况下创建BASIC CRUD。

这是我的操作按钮,位于我的 views \ currencies \ index.blade.php

{!! Form::model($currency, ['method' => 'POST', 'route' => ['currencies.update', $currency] ]) !!}<br/>
{!! Form::hidden('status', 1) !!}<br/>
{!! Form::submit('set default', ['class' => 'btn btn-primary']) !!}<br/>
{!! Form::close() !!}

views\currencies\index.blade.php

进一步解释。这是我的update.blade.php。它会更新“货币”表中的名称和缩写。

<form action="{{ route('currencies.update', $currency) }}" method="post">
    {{ csrf_field() }}
    {{ method_field('PUT') }}
    <input type="hidden" name="status" value="{{ $currency->status}}">
    <input type="text" name="name" value="{{ $currency->name }}"><br/>
    <input type="text" name="acronym" value="{{ $currency->acronym }}"><br/> 
    <input type="submit">
</form>

,当前是我在CurrenciesController中的编辑和更新功能。

 public function edit(Currencies $currency)
    {
        return view('currencies.edit', compact('currency'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Currencies  $currencies
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Currencies $currency)
    {
        $currency->update($request->only('name','acronym','status'));
        return redirect()->route('currencies.index');
    }

它仅从我的add.blade和edit.blade中捕获数据。

现在我在上面也提供的 views \ currencies \ index.blade.php 上显示的按钮应该只更新记录的状态。

我想要实现的是,一旦单击该按钮,它将ID传递给我的currencyController,然后将状态从0更新为1,并将之前的记录从“ 1”更新为“ 0”。最重要的是,在其状态栏中应该只有一个记录,其值为“ 1”。

非常感谢您!

1 个答案:

答案 0 :(得分:1)

您要做的就是执行两个查询,

一个用于更新状态0,状态为1

Currencies::where('status', 1)->update(['status' => 0]);

,将收到的ID的状态从0更改为1

Currencies::where('id', $request->id)->update(['status' => 1]);