awssat / laravel-kabsa
Laravel 数组数据库
v1.5
2022-08-27 21:25 UTC
Requires
- php: ^7.3|^8.0
- illuminate/support: ~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- doctrine/dbal: ^2.6|^3.0
- guzzlehttp/guzzle: ^6.5|^7.0
- illuminate/support: ~5.5.0 || ~5.6.0 || ~5.7.0 || ~5.8.0 || ^6.0 || ^7.0 || ^8.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^3.5 || ^3.6 || ^3.7 || ^3.8 || ^4.0 || ^5.0 || ^6.0
- phpunit/phpunit: ^9.3
README
Laravel Kabsa 是一个简单的数组特质,用于您的 Eloquent 模型,类似于 https://github.com/calebporzio/sushi,但不使用 SQLite
安装
要开始使用 Laravel Kabsa,请使用 Composer 将包添加到您项目的依赖项中
composer require awssat/laravel-kabsa
示例
代码示例请参考 示例:examples
使用
- 将
Kabsa
特质添加到模型中。 - 在模型中添加
$rows
属性。
class State extends Model { use \Awssat\Kabsa\Traits\Kabsa; protected $rows = [ [ 'abbr' => 'NY', 'name' => 'New York', ], [ 'abbr' => 'CA', 'name' => 'California', ], ]; }
或者
class State extends Model { use \Awssat\Kabsa\Traits\Kabsa; public function getRows() { return [ [ 'abbr' => 'NY', 'name' => 'New York', ], [ 'abbr' => 'CA', 'name' => 'California', ], ]; } }
现在,您可以在任何需要的地方使用这个模型,它将表现得好像您已创建了包含您提供的行的表。
$stateName = State::where('Abbr', 'NY')->first()->name; // or $stateName = State::firstWhere('Abbr', 'NY')->name;
关系
class Role extends Model { use \Awssat\Kabsa\Traits\Kabsa; protected $rows = [ ['label' => 'admin'], ['label' => 'manager'], ['label' => 'user'], ]; }
您可以通过名为 KabsaRelationships
的新特质向另一个标准模型添加关系,目前我仅添加了两个关系,希望我们能添加更多
class User extends Model { use \Awssat\Kabsa\Traits\KabsaRelationships; public function role() { return $this->belongsToKabsaRow(Role::class, 'role_label', 'label'); } }
如果 users
表应该有一个 role_label
列,那么
// Grab a User. $user = User::first(); // Grab a Role. $role = Role::where('label', 'admin')->first(); // Associate them. $user->role()->associate($role); // Access like normal. $user->role;
预加载不适用,因为它是一个集合,您不需要预加载,可以直接调用关系 ->relation
。如果需要将其附加到集合数组中,可以创建一个属性并将其添加到 $appends 中。
许可证
MIT 许可证(MIT)。请参阅 许可证文件 以获取更多信息。