仅更新Laravel 6中控制器中一个字段的值

问题描述 投票:0回答:2

我的项目要求管理员必须批准用户上传的项目,以使该项目在网站上可见,这是一种验证或某种形式的控制。因此在“项目”表中,我有一个名为(状态)的字段,默认值为=(拒绝)。

$table->enum('status',['available','denied'])->default('denied');

管理员可以看到所有项目,如果管理员单击它,则需要在每个项目旁边单击一个名为“批准”的按钮,我如何才能在控制器中创建仅更改状态字段的功能?我的控制器已经可以使用的默认编辑和更新功能之外的一个功能。

public function edit($itemid)
{
    $where = array('itemid' => $itemid);
    $data['item_info'] = Item::where($where)->first();

    return view('items.edititem', $data);
}

public function update(Request $request, $itemid)
{
    $request->validate([
        'name' => 'required',
        'description' => 'required',
        'state' => 'required',
        'price' => 'required',
        'charityfee' => 'required',
        'status' => 'required',
        'category' => 'required',
    ]);

    $update = [
        'name' => $request->name, 'description' => $request->description,
        'state' => $request->state, 'price' => $request->price,
        'charityfee' => $request->charityfee, 'status' => $request->status,
        'category' => $request->category, 'itemphoto' => $request->itemphoto
    ];
    Item::where('itemid', $itemid)->update($update);

    return Redirect::to('profile')
        ->with('success', 'Great! item updated successfully');
}

尽管我尝试了以下代码,但出现了一个错误,即我定义的函数未定义:(

public function editstatus($itemid)
        {
          Item::where('itemid', $itemid)->update(array('itemid' => 'available'));

        } 

控制器中的功能

<td><a href="{{ route('items.editstatus',$item->itemid)}}" class="btn btn-primary">approve</a></td>

视图中的代码

php mysql controller laravel-6 insert-update
2个回答
0
投票
您的问题在于editstatus功能。您想更新

status =>'available'


0
投票
我很确定您的$ where变量是错误的,您想将一个变量与一个字段进行比较,只删除'=>'。您基本上是在进行分配操作,而不是进行比较。
© www.soinside.com 2019 - 2024. All rights reserved.