Allows you to use a table prefix with standard Laravel models.
Have inspiration from ideas [Proposal] Prefixed Eloquent Models
You can install the package via composer:
composer require socoladaica/laravel-table-prefix
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());
}
}
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.