现在我有这个控制器从db获取id而不是从db列出som信息。但是当我进入数据库并手动删除数据时,控制器再也找不到id并返回:尝试获取非对象的属性 与女贞信息的planti。我的conde如下所示:
public function saveChanges(Request $request){
$id=$request->input('id');
$this->validate($request, [
'title' => 'required',
'body' => 'required|min:2'
]);
$post=Post::where('id',$id)->first();
if($post->id == $id){
$post->title = $request['title'];
$post->postBody = $request['body'];
if ($post->update())
{
return response()->json([
'type'=>1,
'newtitle'=>$post->title,
'newbody'=>$post->postBody
]);
}
else{
return response()->json(['type'=>0]);
}
}
else {
echo"404";
}
}
我不喜欢这里的东西就像这样直接使用id:
$post=Post::where('id',$id)->first();
我对laravel不太了解所以你认为我可以通过任何机会阻止这种情况吗?
答案 0 :(得分:0)
首先你应该检查对象Post是否存在,例如通过函数is_object() http://php.net/is_object
答案 1 :(得分:0)
根据建议,在尝试访问房产之前先检查是否找到了帖子:
$post = Post::where('id',$id)->first();
if ($post instanceof Post && $post->id == $id) {
// ...
}
供参考,见: