dive-be/eloquent-utils
🛠 Eloquent utilities for improved DX
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.
Related Packages
Foundation package providing base components, utilities, and contracts for all L...
General-purpose, domain-organized helper library for Laravel applications
This package gives Eloquent models the ability to manage their friendships.
Light-weight role-based permissions for Laravel 5 built in Auth system.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 0.4.0 | ~8.4 | ^12.0 | MIT | |
| 0.3.0 | ~8.3 | ^11.0 | MIT | |
| 0.2.0 | ~8.2 | ^10.0 | MIT | |
| 0.1.2 | ^8.1 | ^9.0 | MIT | |
| 0.1.1 | ^8.1 | ^9.0 | MIT | |
| 0.1.0 | ^8.1 | ^9.0 | MIT |