У меня есть 3 таблицы в моей базе данных:
id
, title
)id
, name
),post_id
, categories_id
).я использую Ларавел 4.2. Это мои модели:
Post.php
protected $table = 'posts';
public function categories_posts()
{
return $this->hasMany('Categories_post', 'post_id');
}
public function categories()
{
return $this->hasManyThrough('Categories', 'Categories_post');
}
categories.php
protected $table = 'categories';
protected $fillable = ['name', 'description'];
public function categories_posts()
{
return $this->hasMany('Categories_post', 'categories_id');
}
public function posts()
{
return $this->hasManyThrough('Post', 'Categories_post');
}
categories.php
protected $table = 'categories_posts';
protected $fillable = ['categories_id', 'post_id'];
public function categories()
{
return $this->belongsTo('Categories');
}
public function posts()
{
return $this->belongsTo('Post');
}
PostsController.php
public function index()
{
$posts = Post::with('author')->get();
return View::make('posts.index', (
'posts' => $posts);
}
кратко представляет основной код
index.blade.php
@foreach ($posts as $post)
<tr>
<td>{{ $post->created_at }}</td>
<td>{{ $post->title }}</td>
<td>{{ $post->author->display_name }}</td>
@foreach ($post->categories->categories_post as $cat)
<td>{{ $cat->name }}</td><!-- how to get category name associated with posts !>
@endforeach
<td>{{ $post->status }}</td>
<td>{{ $post->comments_count }}</td>
@endforeach
Этот код возвращает ошибки, я не понимаю.
Так как получить category
имя, которое связано с posts
от hasManyThrough
связь.
Предложите мне, если есть лучший способ, чем использовать hasManyThrough
связь.
Задача ещё не решена.
Других решений пока нет …