yonchando/laravel-cast-attributes
最新稳定版本:v1.0.1
Composer 安装命令:
composer require yonchando/laravel-cast-attributes
包简介
Laravel model cast json columns to class object
关键字:
README 文档
README
Laravel cast attribute is model custom cast json column to Class entity
IMPORTANT property is not primitive (User-Define Type), The User-Define type need to have default value to property.
Installation
Via Composer
composer require yonchando/laravel-cast-attributes
Usage
Model
class User extends \Illuminate\Database\Eloquent\Model { protected $fillable = ['json']; protected $casts = [ 'json' => UserJson::class ]; }
UserJson
private property must have setter with camelCase start with
set
class UserJson extends \Yonchando\CastAttributes\CastAttributes { private string $firstName; protected string $lastName; public string $gender; public Image $image; public function getFirstName(): string { return $this->firstName; } public function setFirstName(string $firstName):void { $this->firstName = $firstName; } public function getLastName(){ return $this->lastName; } }
Image
For sub property class use trait
CastProperty
class Image { use \Yonchando\CastAttributes\Traits\CastProperty; public string $filename; public int $size; public string $path; public function url() { return Storage::url($this->path); } }
Controller
use Illuminate\Http\Request; class UserController extends Controller { public function show($id) { $user = User::find($id); $user->json->getFirstName(); $user->json->getLastName(); $user->json->gender; // access function in image class $user->json->image->url(); // to array $user->json->toArray(); $user->json->image->toArray(); } public function store(Request $request) { // use class $user = new User([ 'json' => UserJson::create($request->all()), ]); // use an array $user = User::create([ 'json' => [ 'first_name' => $request->get('first_name'), 'last_name' => $request->get('last_name'), 'gender' => $request->get('gender'), 'image' => $request->get('image'), ] ]) } }
Methods available for CastProperty trait
| Name | modifier | parameters | Description |
|---|---|---|---|
| toArray | public | class property to array | |
| toJson | public | int $options | class property to json_encode string |
| create | public static | array|object $data | initialize class |
Change log
Please see the changelog for more information on what has changed recently.
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email von.chando@gmail.com instead of using the issue tracker.
Credits
License
MIT. Please see the license file for more information.
统计信息
- 总下载量: 136
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-06-08