Я использую Laravel.
У меня есть отношения между постом и комментариями.
У меня есть $post
, и я хотел бы связать $comments
только со значением published
, установленным на true
.
В контроллере у меня есть:
$post = Post::find($id);
$comments = $post->comments->where('published', 1)->get();
А вот переменная comments
выглядит правильно, но когда я делаю:
return [
'comments' => $comments,
'post' => $post,
];
У меня есть все комментарии из базы данных и сообщения, соединяющиеся с комментариями в одном массиве.
* 1012 например *
$post:
id 24
title "lorem"
body "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis explicabo molestias obcaecati placeat vero. Alias aliquid consectetur, deserunt ducimus iure magnam minus molestias neque pariatur quidem sint temporibus totam vitae."
user_id 2
published 1
created_at "2018-12-03 12:14:30"
updated_at "2019-03-29 10:08:26"
comments [
1 [ ... ]
2 [ ... ]
n [ ... ]
]
$comments {
1 [ ... ]
2 [ ... ]
n [ ... ]
}
Так где я допустил ошибку? Почему это меняется?
модель Comment.php
public function post()
{
return $this->belongsTo(Post::class);
}
public function scopePublished($query)
{
return $query->where('published', 1);
}
Post.php
public function comments()
{
return $this->hasMany(Comment::class);
}