我还是laravel的新手。
我在JSON中得到了这个结果,我希望获得“生物”这个结果。在' user_details'内。
{
"id": 1,
"name": "Jasper Mendiola",
"username": "jasperduane77",
"created_at": "2017-07-22 10:11:04",
"updated_at": "2017-07-22 10:11:04",
"userType": "Administrator",
"user_details": {
"user_id": 1,
"profile_pic": null,
"bio": "frustrated software blahblahblah"
}
我在我的视图中尝试了这段代码
{{$user->user_details->bio}}
但我有错误
>试图获得非对象的属性
这是我的laravel控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\UserDetail;
use DB;
class UsersController extends Controller
{
public function __construct() {
$this->middleware('auth');
}
public function index()
{
//
$user_id = auth()->user()->id;
$user = User::with('userDetails')->find($user_id);
/**** When I enter this code, I get the error
return view('profile.index')->with('user', $user); */
return json_encode($user);
}
}
你是如何做到这一点的?非常感谢帮助。
答案 0 :(得分:1)
你应该这样使用:
<?php
$jsonData = '{
"id": 1,
"name": "Jasper Mendiola",
"username": "jasperduane77",
"created_at": "2017-07-22 10:11:04",
"updated_at": "2017-07-22 10:11:04",
"userType": "Administrator",
"user_details": {
"user_id": 1,
"profile_pic": null,
"bio": "frustrated software blahblahblah"
}
}';
$josnObj = json_decode($jsonData);
echo $josnObj->user_details->bio;//frustrated software blahblahblah
?>
答案 1 :(得分:1)
如果您要发送JSON回复
在您的控制器中,只需将返回json_encode($ user); 替换为 return $ user;
它将自动发送$ user作为json响应。如果您将使用返回json_encode($ user); ,它将以字符串格式发送json响应,您需要在视图中使用json_decode()将此字符串转换为数组或对象。
如果您要发送数据进行观看
然后在你的控制器中:
return view('profile.index', ['user' => $user]);
然后在你看来:
{{$user->user_details->bio}}
答案 2 :(得分:0)
您正在返回一个json字符串,因此对于API请求来说很酷。 laravel执行此操作的方式是使用view(),以便我们可以渲染刀片模板。在这种情况下,你应该做这样的事情:
控制器代码:
return view('users.index', [ 'user' => $user ]);
在这里你需要在views / users / index.blade.php里面有一个刀片文件,你可以在那里调用{{$ user-&gt; user_details-&gt; bio}},因为你仍然使用用户模型而不是json&#34;字符串&#34;。