Метод toJson
Метод toJson применяется к экземпляру модели Eloquent или к коллекции моделей и возвращает строку в формате JSON. Первым параметром передаются опции форматирования JSON (по умолчанию используется значение 0), вторым - глубина рекурсии (по умолчанию 512). Метод использует внутреннее преобразование модели в массив с помощью toArray, а затем применяет функцию json_encode.
Синтаксис
<?php
$model->toJson($options, $depth);
?>
Пример
Давайте преобразуем модель статьи в JSON:
<?php
use AppModelsArticle;
$article = Article::find(1);
$res = $article->toJson();
echo $res;
?>
Результат выполнения кода:
"{"id":1,"title":"article","content":"text","created_at":"2026-01-15T10:00:00.000000Z","updated_at":"2026-01-15T10:00:00.000000Z"}"
Пример
Давайте преобразуем коллекцию моделей в JSON с использованием опций форматирования для улучшения читаемости:
<?php
use AppModelsArticle;
$articles = Article::where('id', '>', 1)->get();
$res = $articles->toJson(JSON_PRETTY_PRINT);
echo $res;
?>
Результат выполнения кода:
"[
{
"id": 2,
"title": "article 2",
"content": "text",
"created_at": "2026-01-15T10:00:00.000000Z",
"updated_at": "2026-01-15T10:00:00.000000Z"
},
{
"id": 3,
"title": "article 3",
"content": "text",
"created_at": "2026-01-15T10:00:00.000000Z",
"updated_at": "2026-01-15T10:00:00.000000Z"
}
]"
Пример
Метод toJson автоматически применяет скрытие атрибутов, указанных в свойстве $hidden модели:
<?php
namespace AppModels;
class Article extends Model
{
protected $hidden = [
'created_at',
'updated_at'
];
}
?>
<?php
use AppModelsArticle;
$article = Article::find(1);
$res = $article->toJson();
echo $res;
?>
Результат выполнения кода:
"{"id":1,"title":"article","content":"text"}"
Пример
Давайте используем метод toJson для передачи данных в представление Blade:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function show(Article $article)
{
$res = $article->toJson(JSON_PRETTY_PRINT);
return view('article.show', ['articleJson' => $res]);
}
}
?>
<script>
const articleData = {!! $articleJson !!};
console.log(articleData);
</script>
Смотрите также
-
метод
toArray,
который преобразует модель в массив -
метод
makeHidden,
который временно скрывает атрибуты модели -
метод
makeVisible,
который временно показывает скрытые атрибуты модели -
метод
hidden,
который определяет атрибуты, скрытые при преобразовании