Перетворення моделей Laravel у JSON для відповідей API

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 січня, 2025
В технологічному світі Laravel пропонує потужні інструменти для перетворення моделей Eloquent в JSON, і метод toJson() є одним з найбільш простих способів досягти цього. Досліджуйте, як цей метод може покращити ваш API, на прикладі практичного використання та налаштування виводу!

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, водночас дозволяючи налаштовувати вивід завдяки атрибутам і зв'язкам моделей

Популярні

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!