AdminsController
public function index(){
$someMessages=$this->blog->paginate(5);
$users=User::all();
// return 'Welcome Admin';
return View::make('admin.admin',['someMessages'=>$someMessages,'users'=>$users]);
}
admin.blade.php
这里需要根据存储在'someMessages'对象中的uid显示'users'变量的用户名。
@extends('layout.default')
@section('title')
<title>Welcome Admin</title>
@stop
@section('content')
@foreach($someMessages as $message)
<blockquote>{{$message['blog']}}
<small>
<cite>
</cite>
</small>
</blockquote>
@endforeach
{{ $someMessages->links()}}
@stop
答案 0 :(得分:1)
如果您正确定义了博客消息和用户之间的雄辩关系,则无需单独查询用户。你想要做的只是热切的加载:
//in case you call it author in your "relation definition"
$someMessages = $this->blog->with('author')->paginate(5);
然后在你的Blade模板中:
@foreach($someMessages as $message)
<div>
<div>{{ $message->blog }}</div>
<div>{{ $message->author->name }}</div>
</div>
@endforeach
如果你还没有宣布这种关系 - 这很容易。打开用户雄辩的模型类并添加方法:
public function blogs()
{
return $this->hasMany('Blog', 'uid');
}
在博客eloquent模型类中,您需要添加:
public function author()
{
return $this->belongsTo('User', 'uid');
}
更多关于雄辩和关系的信息可以找到here。
如果不是这种情况,您仍然可以过滤您的用户集合以获得您想要的那个:
@foreach($someMessages as $message)
<?php
$user = $users->filter(function($user) use ($message)
{
return $user->id == $message->uid;
})->first();
?>
<div>
<div>{{ $message->blog }}</div>
<div>{{ $user->name }}</div>
</div>
@foreach
这里发生的是您根据$message->uid
值过滤您的用户集合并从中获取第一个(由于用户ID是唯一的,因此它应该始终只有一个或没有)。
虽然您需要了解在这种情况下,您将从数据库中获取所有用户,并为您输出的每个博客消息过滤它们。渴望加载是一个更好的主意,如果可能的话,我会坚持下去。