Laravel пропонує кілька способів перетворення моделей Eloquent в JSON, і toJson() є одним з найпростіших. Цей метод дозволяє гнучко налаштовувати, як ваші моделі серіалізуються для API-відповідей.
// Основне використання toJson()
$user = User::find(1);
return $user->toJson();
// З опціями форматування JSON
return $user->toJson(JSON_PRETTY_PRINT);
Розгляньмо практичний приклад системи API-відповідей з використанням toJson():
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $appends = ['reading_time'];
protected $hidden = ['internal_notes'];
public function author()
{
return $this->belongsTo(User::class);
}
public function comments()
{
return $this->hasMany(Comment::class);
}
public function getReadingTimeAttribute()
{
return ceil(str_word_count($this->content) / 200);
}
public function toArray()
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'author' => $this->author->name,
'reading_time' => $this->reading_time,
'comments_count' => $this->comments()->count(),
'created_at' => $this->created_at->toDateTimeString(),
'updated_at' => $this->updated_at->toDateTimeString(),
];
}
}
// У вашому контролері
class ArticleController extends Controller
{
public function show($id)
{
$article = Article::with(['author', 'comments.user'])->findOrFail($id);
return $article->toJson();
}
public function index()
{
$articles = Article::with('author')->get();
return response()->json($articles); // Неявне перетворення
}
}
Метод toJson() у Laravel забезпечує ефективне перетворення моделей у JSON, водночас дозволяючи налаштовувати вивід завдяки атрибутам і зв'язкам моделей