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"
【问题讨论】:
你为什么要用</h1>
关闭你所有的<h3>
?
只是一个错字,我什至没看到它
【参考方案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->userValue])
是 update([0 => $request->userValue])
...您的表是否有一个名为 0
的字段?以上是关于Laravel - 刀片视图不更新用户的数据库没有错误的主要内容,如果未能解决你的问题,请参考以下文章