在Laravel中更改数据库列值

时间:2018-10-13 02:55:44

标签: laravel

我具有可以接受出价的功能,当我接受出价时,同一项目的其他出价会进行反向更新。

说明

bid 1 -> accept = y
[bid 2, bid 3, ....] -> accept = r

到目前为止,我只能更改bid 1的状态,但是bid 2, 3...我不确定如何获取它们。

image

one

代码

这是我当前的代码,它更改了bid 1状态(已接受的列)...

public function bidaccepted(Request $request, $id)
{
    $bid = Bid::findOrFail($id);
    $bid->accepted = 'y';
    $bid->save();
}

刀片

<a href="{{route('bidaccepted', $bid->id)}}" class="text-success"><i class="fa fa-check"></i> Accept This Bid</a>

路线

Route::get('/bidaccepted/{id}', 'Front\BidChatController@bidaccepted')->name('bidaccepted');

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

首先,与您的问题无关,我建议您遵循PSR约定,bidaccepted应该是bidAccepted。

关于您的问题:

public function bidAccepted(Request $request, $id)
{
    $bid = Bid::findOrFail($id);
    $bid->accepted = 'y';
    $bid->save();

    // The part you 
    Bid::where('id', '!=', $id)
       ->where('project_id', $bid->project_id)
       ->update(['accepted' => 'n']);
}

我不是您选择表示数据和项目接受投标的方式的忠实拥护者,我也不是我的解决方案的忠实拥护者:)但是,对于您的问题,我的回答应该起作用。

答案 1 :(得分:0)

为什么不那样做

在表迁移中,为接受为null的列添加默认值

接受出价时;将接受的出价的列更新为y,其余(此处的accepted = null)将被自动视为未接受。

如果要更改接受状态,则必须将旧出价的接受列状态更改为null,然后将新出价更新为y。