This package is a collection of declarative tools for common Eloquent
tasks.
You can install the package via composer:
composer require dive-be/eloquent-utils
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.
Disables the created_at
and updated_at
auto-updates.
class Country extends Model
{
use \Dive\Eloquent\DisablesTimestamps;
}
Depends on: DisablesTimestamps, Unwritable
Prevent unnecessary database round-trips by caching each and every record next to your static model.
Define a unique column.
Schema::create('languages', static function (Blueprint $table) {
$table->id();
$table->char('iso', 2)->unique();
});
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'],
];
public function run(ConnectionInterface $db)
{
$db->table('languages')->insert(Language::$source);
}
No database queries will be performed...
Language::find('NL'); // App\Models\Language { #3645 }
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
Makes your Eloquent model read-only.
class Coupon extends Model
{
use \Dive\Eloquent\Unwritable;
}
Coupon::find(10)->update(['code' => 'je-suis-rogue']); // BadMethodCallException
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email oss@dive.be instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.