Php 对null LARAVEL调用成员函数update()
我试图更新特定项,但出现错误“在null上调用成员函数update()”。 我以前尝试过用->插入($data)更改->更新($data),但效果很好 控制器:Php 对null LARAVEL调用成员函数update(),php,mysql,database,laravel,Php,Mysql,Database,Laravel,我试图更新特定项,但出现错误“在null上调用成员函数update()”。 我以前尝试过用->插入($data)更改->更新($data),但效果很好 控制器: public function update(Request $request, $id) { $this -> validate($request, array( 'gamename' => 'required|min:3', 'price' =>
public function update(Request $request, $id)
{
$this -> validate($request, array(
'gamename' => 'required|min:3',
'price' => 'required|int|min:1',
'genre' => 'required',
'releaseddate' => 'required|date',
'picture' => 'required|mimes:jpeg,jpg,png,gif'
));
$gamename = $request->input('gamename');
$genre = $request->input('genre');
$price = $request->input('price');
$releaseddate = Carbon::parse($request->input('releaseddate'));
$picture = $request->file('picture')->getClientOriginalName();
$data=array('gamename' => $gamename, 'genre'=>$genre, 'price'=>$price,'releaseddate'=>$releaseddate,'picture'=>$picture );
DB::table('games')->join('genres', 'games.genreid', '=', 'genres.genreid')->find($id)->update($data);
return redirect('managegame');
}
视图:
<form action="/update/{id}" method="post" id="registerform" enctype="multipart/form-data">
<div class="errorpop{{ $errors->has('genre') ? ' has-error' : '' }}">
<label for="genre" class="">Genre</label>
<div class="">
@foreach($genres as $genre)
<option value="{{ $genre->genreid }}">{{ $genre->genre }}</option>
@endforeach
@if ($errors->has('genre'))
<span class="help-block">
<strong>{{ $errors->first('genre') }}</strong>
</span>
@endif
</div>
</div>
体裁
@foreach($流派作为$流派)
{{$GREEP->GREEP}
@endforeach
@如果($errors->has('genre'))
{{$errors->first('genre')}
@恩迪夫
确保您得到了对象
$game = DB::table('games')->
join('genres', 'games.genreid', '=', 'genres.genreid')->where('id',$id)->get();
//确保您拥有所需的对象。然后
$game->update($data);
我也不确定这条线是否如你所期望的那样有效
DB::table('games')->join('genres','games.genreid','=','genres.genreid')->查找($id)->更新($data)代码>
你想更新什么<代码>游戏
或类型
?你不能像那样一次更新两个表。您需要找到要更新的games
行,更新该行,以及连接表行,并更新该行,但不能一次完成所有操作
但是,您试图用相同的方法从一个简单表单更新两个表,这表明您的表布局不正确?
{id}
不是一个值。您必须具有{id}
的值。
示例:action=“/update/1”
它获取我点击编辑的游戏id | |我得到的结果与我使用{{$id=$\u SESSION['id']}@Alexeymezenso时得到的结果相同,这会给你一个对象,然后
dd(DB::table('games')->find($id))
?而不是null
?如果有,请执行以下操作:DB::table('games')->where('id',$id)->更新($data)
;是的,它不是空的,我已经试过你的答案了。它没有显示任何错误,但只是刷新编辑页面(应该是redirect:view),而不更新数据声音(如validation redirects back),尝试删除验证。游戏会被更新吗?DB::table('games')->where('id',$id)->update($data);应该有用,在我这边很好,我已经试过你的答案了。它没有显示任何错误,但只是刷新编辑页面(应该是redirect:view),而不更新数据
<form action="/update/1" method="post" id="registerform" enctype="multipart/form-data">
<div class="errorpop{{ $errors->has('genre') ? ' has-error' : '' }}">
<label for="genre" class="">Genre</label>
<div class="">
@foreach($genres as $genre)
<option value="{{ $genre->genreid }}">{{ $genre->genre }}</option>
@endforeach
@if ($errors->has('genre'))
<span class="help-block">
<strong>{{ $errors->first('genre') }}</strong>
</span>
@endif
</div>
</div>
DB::table('games')->join('genres', 'games.genreid', '=', 'genres.genreid')->where('id', $id)->update($data);