socoladaica / laravel-table-prefix
Allows you to use a table prefix with standard Laravel models
Installs: 1 463
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 3
Forks: 4
Open Issues: 0
Requires
- php: ^7.4|^8.0
- laravel/framework: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^3.11
This package is auto-updated.
Last update: 2025-03-03 05:59:51 UTC
README
Allows you to use a table prefix with standard Laravel models.
Have inspiration from ideas [Proposal] Prefixed Eloquent Models
Installation
You can install the package via composer:
composer require socoladaica/laravel-table-prefix
Usage
Using it inside a Post
model would look like this:
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Socoladaica\LaravelTablePrefix\HasTablePrefix; class Post extends Model { use HasTablePrefix; protected $prefix = 'blog_'; }
Using it inside a CategoryPost
pilot would look like this:
<?php namespace App; use Illuminate\Database\Eloquent\Relations\Pivot; use Socoladaica\LaravelTablePrefix\HasTablePrefix; class CategoryPost extends Pivot { use HasTablePrefix; protected $prefix = 'blog_'; }
However, if someone were to use this approach and had many models with a prefix that had to be updated this could prove to be a pain. We can do better by creating another trait (this trait would theoretically exist in user-land code, not in the core), say something like BlogPrefix
:
<?php namespace App; use Socoladaica\LaravelTablePrefix\HasTablePrefix; trait BlogPrefix { use HasTablePrefix; /** * The table prefix associated with the model. * * @var string */ protected $prefix = 'blog_'; }
The final model might look something like this:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { use BlogPrefix; }
The final pivot might look something like this:
<?php namespace App; use Illuminate\Database\Eloquent\Relations\Pivot; use Socoladaica\LaravelTablePrefix\HasTablePrefix; class CategoryPost extends Pivot { use BlogPrefix; }
After that you can using it inside a migration would look like this:
class CreateSocolaCmsBlogDatabase extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create(Post::getTableName(), function (Blueprint $table) { $table->id(); $table->timestamps(); }); Schema::create(Category::getTableName(), function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists(Post::getTableName()); Schema::dropIfExists(Category::getTableName()); } }
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email Socoladaica@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.