naabster / laravel-eloquent-hashids
自动为 Laravel 中的新 Eloquent 模型生成 hashids。
Requires
- php: ^7.0
- illuminate/database: ^5.1.0
- vinkla/hashids: ^3.1
This package is not auto-updated.
Last update: 2024-09-28 17:12:42 UTC
README
Laravel 5 Eloquent 模型特性,用于自动生成并持久化保存Hashids。
使用@vinkla的 Laravel 5 Hashids 包。
安装
使用 Composer 在项目的根目录中要求此包。
composer require naabster/laravel-eloquent-hashids:~1.0
您应该首先根据其安装说明安装@vinkla的 Laravel 5 Hashids 包。
使用
在您的模型上使用 EloquentHashids
特性
use Illuminate\Database\Eloquent\Model; use Naabster\EloquentHashids\EloquentHashids; class Book extends Model { use EloquentHashids; // Rest of your eloquent model }
配置
默认使用以下配置
Hashids 连接
默认的 Hashids 连接是 table.<tablename>
,例如,对于 Book
模型,它将是 table.books
。您可以使用 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'; } }
确保您在 config/hashids.php
配置文件中设置了您的连接(由 @vinkla 的 Laravel 5 Hashids 包提供)!
列名
默认情况下,Hashid 列名为 uid
。您可以使用 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'; } }
注意
此包为新的模型生成 Hashids 并将其保存到数据库表中的列!要执行此操作,此列必须存在于您的表中。
您应该在模型中添加此列,使用 数据库迁移。
编码值
默认情况下,您的 Hashid 的值/数字是模型的 primary Key
属性(默认为 id
)。您可以根据需要调整此值,只需确保它与 Hashids
兼容。只需从 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; } }
示例
在此示例中,我们使用连接 bookHashids、列 hashid 和编码值 数组 生成 Hashids
。
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]; } }
许可证
Laravel 5 Eloquent Hashids 包是开源软件,根据MIT 许可证授权。