1. Для того чтобы какие-то поля модели не отображались нужно использовать переменную hidden, с помощью нее мы указываем какие поля не должны отображаться в JSON ответе.
protected $hidden = [
'type_id',
'created_at',
'updated_at',
];
2. У каждой модели вы должны указать свои поля которые должны быть скрыты
protected $hidden = [
'type_id',
'created_at',
'updated_at',
];
3.
Category::with('posts.comments')->get();
4. Для этого также есть специальные переменные и методы.
Также доступен такой метод
public function getDateAttribute () {
return date('Y-M-D', $this->date);
}
public function getUrlAttribute () {
return url($this->slug);
}
этот метод выведет $post->date в нужном формате
чтобы такой метод был доступен в json нужно указать его в
protected $appends = [
'url',
'topic',
];