Laravel 的预加载正在从数据库中获取所有数据
Laravel's Eager Loading is bringing all data from database
我有一个属于 Category
模型的 Post
模型。我还有一个列出所有 Post
的索引页,对于每个我需要打印它所属的 Category
的名称。
class Post extends Model
{
public function category()
{
return $this->belongsTo(Category::class);
}
}
class Category extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
我的PostController::index
public function index()
{
return \View::make('admin/post/index')->with([
'posts' => \DB::table('posts')->orderBy('id', 'DESC')->get(),
'category' => Post::with('category')->get()
]);
}
像这样,如果我回显 $category
,它会在 Post
的每一行内显示所有已注册的类别。我不知道如何在视图中显示每个 Post
.
类别的正确名称
我认为我这样做了,但是像这样,它只显示每个 Post
:[=25 的 table 的 x 寄存器=]
@foreach ($posts as $post)
<tr>
<td>
<a href="/admin/post/view/{{ $post->id }}">
{{ $post->title }}
</a>
</td>
<td>
{{ str_limit($post->content, 120) }}
</td>
<td>
{{ $category[1]->category->category }}
</td>
<td>
{{ date('m/d/Y', strtotime($post->created_at)) }}
</td>
<td>
<a href="/admin/post/edit/{{ $post->id }}" class="btn btn-primary">
Edit
</a>
<a href="/admin/post/delete/{{ $post->id }}" class="btn btn-danger">
Delete
</a>
</td>
</tr>
@endforeach
如何使用 Eager Loading 正确打印与 Post
相关的 Category
和 Laravel 5.2 的名称?
我认为以下步骤可以帮助您。
在模型中,您与 catefory 建立如下关系:
class Post extends Model
{
protected $fillable = [
'name',
'category_id'
];
//Relation with category Model category table
public function relCategory(){
return $this->belongsTo('App\Category', 'category_id', 'id');
}
}
之后,您从 Post 模型中获取控制器中的所有数据,如下所示:
public function index()
{
return \View::make('admin/post/index')->with([
'data' => App\Post::orderBy('id', 'DESC')->get()
]);
}
现在在视图页面中,您可以调用模型关系和视图类别,如下所示:
@foreach($data as $values)
<td>
{{ $values->relCategory->category }}
</td>
@endforeach
我有一个属于 Category
模型的 Post
模型。我还有一个列出所有 Post
的索引页,对于每个我需要打印它所属的 Category
的名称。
class Post extends Model
{
public function category()
{
return $this->belongsTo(Category::class);
}
}
class Category extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
我的PostController::index
public function index()
{
return \View::make('admin/post/index')->with([
'posts' => \DB::table('posts')->orderBy('id', 'DESC')->get(),
'category' => Post::with('category')->get()
]);
}
像这样,如果我回显 $category
,它会在 Post
的每一行内显示所有已注册的类别。我不知道如何在视图中显示每个 Post
.
我认为我这样做了,但是像这样,它只显示每个 Post
:[=25 的 table 的 x 寄存器=]
@foreach ($posts as $post)
<tr>
<td>
<a href="/admin/post/view/{{ $post->id }}">
{{ $post->title }}
</a>
</td>
<td>
{{ str_limit($post->content, 120) }}
</td>
<td>
{{ $category[1]->category->category }}
</td>
<td>
{{ date('m/d/Y', strtotime($post->created_at)) }}
</td>
<td>
<a href="/admin/post/edit/{{ $post->id }}" class="btn btn-primary">
Edit
</a>
<a href="/admin/post/delete/{{ $post->id }}" class="btn btn-danger">
Delete
</a>
</td>
</tr>
@endforeach
如何使用 Eager Loading 正确打印与 Post
相关的 Category
和 Laravel 5.2 的名称?
我认为以下步骤可以帮助您。
在模型中,您与 catefory 建立如下关系:
class Post extends Model
{
protected $fillable = [
'name',
'category_id'
];
//Relation with category Model category table
public function relCategory(){
return $this->belongsTo('App\Category', 'category_id', 'id');
}
}
之后,您从 Post 模型中获取控制器中的所有数据,如下所示:
public function index()
{
return \View::make('admin/post/index')->with([
'data' => App\Post::orderBy('id', 'DESC')->get()
]);
}
现在在视图页面中,您可以调用模型关系和视图类别,如下所示:
@foreach($data as $values)
<td>
{{ $values->relCategory->category }}
</td>
@endforeach