我正在尝试在Laravel中创建一个简单的应用程序,以从数据库发送和获取注释。
我在AJAX中同时使用PHP和JS。但是当我尝试获取完整的注释对象时:
PHP
public function UpdateComment(Request $request){
$id = $request->id;
$jsonCode = DB::table('comments')->where('id', $id)->get();
$comment = json_decode($jsonCode);
return $comment
}
效果很好:
[{…}]
0:
author_id: 6
comment_date: "2018-09-15 09:53:01"
comment_text: "23423434234"
history: ""
id: 60
last_update: "2018-09-15 00:00:00"
>proto__: Object
length: 1
>proto__: Array(0)
这正是我期望看到的完整的PHP对象。 但是,当我尝试返回或仅使用同一对象的单个属性时,出现了500错误...
return $comment->id;
。
POST http://laravelhost/update-comment 500 (Internal Server Error)
我是PHP的初学者,所以应该是一个非常简单的错误。
答案 0 :(得分:0)
尝试一下:
public function UpdateComment(Request $request){
$id = $request->id;
$record = DB::table('comments')->where('id', $id)->get();
return $record;
}
您不需要json_decode()DB :: table()...的返回值...
答案 1 :(得分:0)
要检索单行,应使用first()而不是get()
$comment = DB::table('comments')->where('id', $id)->first();
echo $comment->id;
答案 2 :(得分:0)
由于json_decode()
返回一个数组,而不是一个对象,因此出现错误500。
因此,要使用数组语法而不是对象运算符来访问数据:
return $comment['id']
答案 3 :(得分:0)
您可以使用
$comment = DB::table('comments')->where('id', $id)->first();
return $comment->id;
或
$comment = DB::table('comments')->where('id', $id)->get();
return $comment[0]->id;
如果在获取数据后使用json_decode,则对象将 转换为数组。因此,您必须使用 $ arrayname ['keyname'] 提取数据。