aw-studio / laravel-dynamic-attributes
v0.1.0
2021-10-20 08:44 UTC
Requires
- illuminate/contracts: ^8.46
- illuminate/support: ^8.46
- inertiajs/inertia-laravel: ^0.4
Requires (Dev)
- php: ^8.0
- orchestra/testbench: ^6.21
- phpunit/phpunit: ^9.5
README
为Eloquent 模型添加动态属性的一个包。
也请参阅:Laravel Dynamic Relations
设置
使用composer安装包
composer require aw-studio/laravel-dynamic-attributes
发布迁移
php artisan vendor:publish --tag="dynamic-attributes:migrations"
用法
只需将 HasDynamicAttributes
添加到模型中
use Illuminate\Database\Eloquent\Model; use AwStudio\DynamicAttributes\HasDynamicAttributes; class Page extends Model { use HasDynamicAttributes; }
就完成了
$page = Page::create([ 'headline' => 'Hello World!', 'text' => 'Lorem Ipsum...', ]); echo $page->headline; // "Hello World!"
手动设置属性转换
通常应根据属性值正确设置转换
Page::create(['released_at' => now()->addWeek()]); dd($page->released_at); // Is an instance of Illuminate\Support\Carbon
但是,您可能希望手动设置属性转换
$page = Page::create(['is_active' => 1]); dump($page->is_active); // output: 1 $page->setDynamicAttributeCast('is_active', 'boolean')->save(); dd($page->is_active); // output: true
查询范围
Page::whereAttribute('foo', 'bar');