У меня есть 3 модели: Article
, Comment
, Reaction
.Laravel "inested" with()
Каждая статья имеет много комментариев, и каждый комментарий имеет много реакции:
App \ Статьи:
class Article extends Model
{
public function comments() {
return $this->hasMany('App\Comment');
}
}
App \ Комментарий:
class Comment extends Model
{
public function article() {
return $this->belongsTo('App\Article');
}
public function reactions() {
return $this->hasMany('App\Reactions');
}
}
App \ Реакция:
class Reaction extends Model
{
public function comment() {
return $this->belongsTo('App\Comment');
}
}
В моей [email protected]
Я хочу получать комментарии и их реакции:
ArticleController:
public function index()
{
$articles = Article::with('comments')
->select('articles.*')
->leftjoin('comments', 'comments.article_id', '=', 'articles.id')
->get();
return view('wiki')->withArticles($articles);
}
Я могу перебрать комментарии ($article->comments
), однако я не уверен, как сделать комментарий with('reactions')
? т.е.
@foreach($article->comments as $comment)
@foreach($comment->reactions)
// something like this...
@endforeach
@endforeach
Является ли это действительно необходимо использовать 'with' метод? Вы можете так же легко получить все статьи, используя 'Articles :: all();' –
@Adherence - не знал, что он автоматически соединяется с методом 'all()', спасибо! – frosty