dimalebid/laravel-json-cast
Composer 安装命令:
composer require dimalebid/laravel-json-cast
包简介
description
README 文档
README
Вы когда-нибудь хотели привести свои столбцы JSON к объекту-значению?
Под капотом он реализует интерфейс Laravel Arrayable, которое обрабатывает сериализацию между JsonCastable и столбцом базы данных JSON.
Installation
You can install the package via composer:
$ composer require dimalebid/laravel-json-cast
Usage
1. Создаете UserSettings
namespace App\Models\User; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use App\Models\User\Settings\Settings; class UserSettings implements CastsAttributes { public function get($model, string $key, $value, array $attributes) { return new Settings((array)json_decode($value, true)); } public function set($model, string $key, $value, array $attributes) { return json_encode(get_object_vars($value)); } }
2. Создаете Settings
namespace App\Models\User\Settings; use DimaLebid\LaravelJsonCast\JsonCastable; use App\Models\User\Settings\Auth; class Settings extends JsonCastable { public Auth $auth; public string $country = 'Ukraine'; public ?string $phone; public function __construct(array $attributes) { $this->auth = new Auth($attributes); parent::__construct($attributes); } }
Обьект Auth похож на Settings с одним отличием что в нем нет конструктора.
3. Настройте свой атрибут Eloquent для приведения к нему:
namespace App\Models; use App\Values\Address; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $casts = [ 'settings' => UserSettings::class, ]; }
Получить значение из поля JSON
$userId = 1; $user = User::find($userId); $settings = $user->settings; dd($settings->country); //or dd($settings->auth->facebook);
Сохранить или обновить значение в поле JSON
$userId = 1; $user = User::find($userId); $user->settings->country = 'USA'; $user->save();
Вот так легко и просто можно работать с полем JSON.
统计信息
- 总下载量: 21
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-04-28