我试图通过belongsTo项目获取用户名。
我在我的物品模型中有这个:
public function user()
{
return $this->belongsTo('User', 'user_id', 'id');
}
这在我的控制器中:
$user = $item->user->username;
但我明白了:
Trying to get property of non-object
当我这样做时:
return $item->user->username;
在我的控制器中它可以工作。
有什么不对?
控制器/型号:http://pastebin.com/qpAh8eFd
答案 0 :(得分:0)
您的控制器中有以下功能:
public function index($type)
{
$items = $this->item->where('type', '=', $type)->get();
foreach($items as $item):
$user = $item->user->username;
endforeach;
return View::make('items.index', ['items' => $items, 'user' => $user]);
}
你不需要在控制器中进行foreach
查看,无论你做什么,你做错了,而是像你这样做index
函数:
public function index($type)
{
$items = $this->item->where('type', '=', $type)->get();
return View::make('items.index', ['items' => $items]);
}
仅将$items
传递到您的items/index.blade.php
视图。如果需要,您可以在视图中执行foreach
循环,并且在每次迭代中,您可以使用以下内容访问与user
相关的item
:
@foreach($items as $item)
{{ $item->user->uername }}
@endforeach
您可能会收到Trying to get property of non-object
错误消息,因为每个$item
可能没有相关用户。因此,请确保每个$item
都有相关用户。您还可以使用以下内容获取user
项目:
$items = $this->item->with('user')->where('type', '=', $type)->get();
return View::make('items.index', ['items' => $items]);
在您的视图中,您可以检查该项目是否包含相关用户:
@foreach($items as $item)
@if($item->user)
{{ $item->user->uername }}
@endif
@endforeach