engency / eloquent-formatting
Eloquent 自定义格式化
v0.4.1
2024-07-23 12:26 UTC
Requires
- php: ^7.4|^8.0
- illuminate/database: ^7.0|^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.0
Requires (Dev)
README
需求
- PHP 7.1+
- Eloquent 7.0+
- Carbon
安装
您可以使用 composer 将 eloquent-formatting 插件安装到您的 Laravel 项目中;
composer require engency/eloquent-formatting
在您的模型类上使用 CustomDataFormats 特性和 ExportsCustomDataFormats 接口;
namespace App\Models; use Engency\DataStructures\CustomDataFormats; use Engency\DataStructures\ExportsCustomDataFormats; use Illuminate\Database\Eloquent\Model; Class User extends Model implements ExportsCustomDataFormats { use CustomDataFormats; protected $exports = [ 'default' => [ 'name', 'age', ['posts', ['format' => 'extended']], ['created_at', ['dateFormat' => 'yy-m-d']] ], 'limited' => [ 'name' ] ]; public function posts() { return $this->hasMany(Post::class); } } Class Post extends Model implements ExportsCustomDataFormats { use CustomDataFormats; protected $exports = [ 'default' => [ 'name', ], 'extended' => [ 'name', 'created_at' ] ]; }
使用 $exports 字段,您可以指定在何种情况下应该导出哪些属性。查看 User 类。默认情况下,该实例导出其名称、年龄、帖子以及 created_at 日期。
基本用法
$user = User::find(1); $array = $user->toArray(); // exports name, age, posts and created_at $limited_array = $user->toArray('limited'); // exports only the name-attribute
导出关系或集合
上面的用户类显示了用户类和帖子类之间的一对多关系。由于帖子类也实现了 ExportsCustomDataFormats 接口,我们可以定义所需的格式。
['posts', ['format' => 'extended']]
导出日期属性
您可以选择以何种格式导出 Carbon 日期属性。有关日期格式的更多信息,请参阅 Carbon 文档:https://carbon.nesbot.com/docs/#api-formatting
['created_at', ['dateFormat' => 'yy-m-d']]
贡献者
- Frank Kuipers (GitHub)
许可
此插件受 MIT 许可 许可。