У меня есть модель Post
, которая принадлежит модели Category
. У меня также есть индексная страница, в которой перечислены все Post
s, и для каждого из них мне нужно напечатать имя Category
, к которому принадлежит.Lagervel's Eager Loading приводит все данные из базы данных
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
:
@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
Как правильно выводить имя из Category
, который связанные с Post
, с Laravel 5.2 с использованием Eager Loading?
Спасибо. Он решил это. В чем разница между использованием '\ DB :: table ('posts') -> orderBy ('id', 'DESC') -> get()' и вашего решения? – mfgabriel92
@GabrielMFernandes ... когда вы используете DB :: it обрабатываете прямой запрос .. но когда вы используете Model .. тогда запрос при первой передаче в Model затем обрабатывает SQL-запрос. В вашем случае я использую Post Model, чтобы я мог доступ к методу relCategory внутри этой модели сообщения ... –
Я вижу. Спасибо за ваше решение. – mfgabriel92