/eloquent-auto-hashids

Automatically generate hashids in Laravel 5 for a new Eloquent Model.

Primary LanguagePHPMIT LicenseMIT

Laravel 5 Eloquent Hashids

Laravel 5 Eloquent Model trait for automatically generating Hashids for new models. Uses @vinkla's Laravel 5 Hashids package.

Latest Stable Version License

Installation

Require this package, with Composer, in the root directory of your project.

composer require naabster/laravel-eloquent-hashids:~1.0

Usage

Use the EloquentHashids trait on your model:

use Illuminate\Database\Eloquent\Model;
use Naabster\EloquentHashids\EloquentHashids;

class Book extends Model
{

  use EloquentHashids;

  // Rest of your eloquent model
}

Configuration

By default the following configuration is used:

Hashids Connection

The default Hashids Connection is table.<tablename>, so for example for the Book model it would be table.books. You can set a different connection for your model with static::getHashidConnection():

use Illuminate\Database\Eloquent\Model;
use Naabster\EloquentHashids\EloquentHashids;

class Book extends Model
{

  use EloquentHashids;

  public static function getHashidConnection(Model $model)
	{
	  return 'someconnection';
	}
}

Make sure you set your connections in your config/hashids.php config file!

Column Name

By default the Hashid column is named uid. You can set a different column name for your model with static::getHashidColumn():

use Illuminate\Database\Eloquent\Model;
use Naabster\EloquentHashids\EloquentHashids;

class Book extends Model
{

  use EloquentHashids;

  public static function getHashidColumn(Model $model)
	{
	  return 'hashid';
	}
}

Encoding Value

By default the Value/Number for your Hashid is the id attribute of your model. You can adjust that any way you want, just make sure it is Hashids compatible. Just return another value from static::getHashidEncodingValue():

use Illuminate\Database\Eloquent\Model;
use Naabster\EloquentHashids\EloquentHashids;

class Book extends Model
{

  use EloquentHashids;

  public static function getHashidEncodingValue(Model $model)
	{
	  return $model->myId;
	}
}

Example

In this example we generate Hashids with the connection bookHashids, for column hashid and with an encoding value of an array:

use Illuminate\Database\Eloquent\Model;
use Naabster\EloquentHashids\EloquentHashids;

class Book extends Model
{

  use EloquentHashids;

  public static function getHashidConnection(Model $model)
	{
	  return 'bookHashids';
	}
	
  public static function getHashidColumn(Model $model)
	{
	  return 'hashid';
	}

  public static function getHashidEncodingValue(Model $model)
	{
	  return [$model->id, $model->foreign_key];
	}
}

License

The Laravel 5 Eloquent Hashids package is open-sourced software licensed under the MIT license.