Laravel - 刀片视图不更新用户的数据库没有错误

Posted

技术标签:

【中文标题】Laravel - 刀片视图不更新用户的数据库没有错误【英文标题】:Laravel - Blade View not updating user's database with no error 【发布时间】:2020-03-09 09:12:19 【问题描述】:

我有一个刀片视图,其中用户有不同值的不同卡片(范围从 1 到 7)。

我在一个可点击的 div 中放置了一个 .svg,它使用参数将 put 请求发送到我的路由,我的路由接受接收到的数据并将其传递给我的控制器方法。我没有收到服务器错误或类似错误,但我的值没有更新。

“cards.blade.php

<!-- Stored in resources/views/child.blade.php -->


@extends('layouts.app')


@section('title', 'Scrumpoker')



@section('content')

<div class="pull-right">

    <a href=" route('sessions.show', $currentRoom->id)" class="btn btn-light">Zurück</a>

</div>

<h3 align="center">Last updated: $currentRoom->updated_at->diffForHumans() ?? ''</h1>
    <h3 align="center">Room Number: $currentRoom->id</h1>

        @foreach ($currentUser as $user)
        <div align="left">
            <li>
                <!-- <h3><u>Userid</u> $user->id</h1> -->
                <h3><u>Username:</u> $user->name</h1>
                    <h3>$user->name's estimation is: $user->userValue ?? ''</h1>
                        <h3>@if ($user->isAdmin === 1||$user->isAdmin !== null )
                            <strong>Scrummaster</strong>
                            @endif</h1>
                            <hr>

            </li>
        </div>
        @endforeach


                    <div class="centerDiv " onclick="document.forms['values'].submit();" style="cursor: pointer;">
                        <form action="route('sessions.values', $currentRoom->id)" name="values" method="post">
                            @csrf
                            @method('PUT')
                            <input type="number" value="1" name="userValue" hidden>
                            <img src="https://image.flaticon.com/icons/svg/188/188234.svg"  >
                        </form>
                    </div>

“web.php”

Route::put('values/id?', 'SessionController@updateValues')
    ->name('sessions.values')
    ->middleware('auth');

“SessionController@updateValues.php”

 public function updateValues($id, Request $request)

    
        $currentUser = Auth::user();
        $currentRoom = Session::findOrFail($id);


        $currentUser->update([$request->userValue]);
        $currentRoom->touch();

        return redirect()->back()
            ->with('currentUser', $currentUser)
            ->with('currentRoom', $currentRoom);
    

"dd($request, $id)"

Request #51 ▼
  #json: null
  #convertedFiles: null
  #userResolver: Closure($guard = null) #31 ▶
  #routeResolver: Closure() #236 ▶
  +attributes: ParameterBag #53 ▶
  +request: ParameterBag #52 ▼
    #parameters: array:3 [▼
      "_token" => "cKNFuU5GCLS7uL35OGq3nOGgLzOQD2dC7f96wy0S"
      "_method" => "PUT"
      "userValue" => "1"
    ]
  
  +query: ParameterBag #59 ▼
    #parameters: []
  
  +server: ServerBag #55 ▶
  +files: FileBag #56 ▶
  +cookies: ParameterBag #54 ▶
  +headers: HeaderBag #57 ▶
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/values/8"
  #requestUri: "/idk/public/values/8"
  #baseUrl: "/idk/public"
  #basePath: null
  #method: "PUT"
  #format: null
  #session: Store #255 ▶
  #locale: null
  #defaultLocale: "en"
  -isHostValid: true
  -isForwardedValid: true
  basePath: "/idk/public"
  format: "html"

"8"

【问题讨论】:

你为什么要用&lt;/h1&gt;关闭你所有的&lt;h3&gt; 只是一个错字,我什至没看到它 【参考方案1】:

update() 方法不知何故不起作用,将我的 SessionController@updateValues 更改为:

 public function updateValues($id, Request $request)

    
        $currentUser = Auth::user();
        $currentRoom = Session::findOrFail($id);
        $updatedValue = $request->userValue;
        $currentUser->userValue = $updatedValue;
        $currentUser->save();
        $currentRoom->touch();


        return redirect()->back()
            ->with('currentUser', $currentUser)
            ->with('currentRoom', $currentRoom);
    

现在它确实更新了我的用户特定值!

【讨论】:

因为update 需要一个关联数组...您之前只是传递了一个 0 索引数组; update([$request-&gt;userValue])update([0 =&gt; $request-&gt;userValue]) ...您的表是否有一个名为 0 的字段?

以上是关于Laravel - 刀片视图不更新用户的数据库没有错误的主要内容,如果未能解决你的问题,请参考以下文章

我的视图不包括刀片模板的 CSS - laravel 8

php Laravel:具有可数据刀片组件的数据表用户视图

在 laravel 中动态创建刀片

在刀片视图中显示路线的结果(Laravel)

检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel

在刀片视图文件中使用laravel策略授权