dive-be/eloquent-utils
最新稳定版本:0.4.0
Composer 安装命令:
composer require dive-be/eloquent-utils
包简介
Declarative Eloquent utilities for an improved DX
README 文档
README
This package is a collection of declarative tools for common Eloquent tasks.
Installation
You can install the package via composer:
composer require dive-be/eloquent-utils
Usage
Again, the primary purpose is to provide a declarative interface for frequent imperative tasks. The added benefit is that a person skimming through the model can immediately see what's going on due to the declarative nature.
DisablesTimestamps
Disables the created_at and updated_at auto-updates.
class Country extends Model { use \Dive\Eloquent\DisablesTimestamps; }
InteractsWithStaticData
Depends on: DisablesTimestamps, Unwritable
Prevent unnecessary database round-trips by caching each and every record next to your static model.
Migration
Define a unique column.
Schema::create('languages', static function (Blueprint $table) { $table->id(); $table->char('iso', 2)->unique(); });
Model
The source data is defined in the same file.
final class Language extends Model { use \Dive\Eloquent\InteractsWithStaticData; } Language::$source = [ 'DE' => ['id' => 1, 'iso' => 'DE'], 'EN' => ['id' => 2, 'iso' => 'EN'], 'FR' => ['id' => 3, 'iso' => 'FR'], 'NL' => ['id' => 4, 'iso' => 'NL'], ];
(Database)Seeder
public function run(ConnectionInterface $db) { $db->table('languages')->insert(Language::$source); }
Use
No database queries will be performed...
Language::find('NL'); // App\Models\Language { #3645 }
Unguarded
Disables mass assignment protection on a per model basis.
class Product extends Model { use \Dive\Eloquent\Unguarded; }
Product::find(1337)->fill([ 'sku' => 'abcdefg', ])->save(); // true
Unwritable
Makes your Eloquent model read-only.
class Coupon extends Model { use \Dive\Eloquent\Unwritable; }
Coupon::find(10)->update(['code' => 'je-suis-rogue']); // BadMethodCallException
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email oss@dive.be instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 8.8k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-05-23