laravie / dhosa
Laravel Eloquent 的热插拔
v1.1.0
2020-08-31 12:26 UTC
Requires
- php: >=7.3
- illuminate/database: ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- orchestra/canvas: ^4.5 || ^5.0 || ^6.0
- orchestra/support-core: ^4.0 || ^5.0 || ^6.0
- orchestra/testbench: ^4.8 || ^5.2 || ^6.0
This package is auto-updated.
Last update: 2024-08-24 12:09:37 UTC
README
Dhosa 允许开发者为 Eloquent 模型实现热插拔功能。这有助于包开发者创建基础模型,应用开发者可以在基础模型的基础上进行扩展,同时确保所有关系都使用正确的模型。
安装
通过 composer 安装,请在终端运行以下命令
composer require "laravie/dhosa"
用法
启用热插拔
要为任何 Eloquent 启用热插拔,您只需使用 Laravie\Dhosa\Concerns\Swappable
并实现该方法。
<?php namespace App\Models; // ... use Illuminate\Foundation\Auth\User as Authenticatable; use Laravie\Dhosa\Concerns\Swappable; class User extends Authenticatable { use Swappable; /** * Get Hot-swappable alias name. * * @return string */ public static function hsAliasName(): string { return 'User'; } }
注册热插拔
use Laravie\Dhosa\HotSwap; HotSwap::register('Orchestra\Model\User');
覆盖热插拔
在 App\Providers\AppServiceProvider
中,我们现在可以通过添加以下内容来覆盖 User
到 App\User
的解析
use Laravie\Dhosa\HotSwap; HotSwap::override('User', 'App\User');
定义关系
您可以使用以下代码定义关系
use Orchestra\Model\User; /* ... */ public function user() { return $this->belongsTo(User::hsFinder()); }
进行查询
use Orchestra\Model\User; $user = User::hs(); // return instance of App\User $user = User::hs()->query(); // return a query builder for App\User $user = User::hsOn('api'); // return a query builder for App\User using `api` db connection. $user = User::hsOnWriteConnection(); // return a query builder for App\User using write PDO connection.
辅助方法
use Orchestra\Model\Role; use Orchestra\Model\User; User::hsAliasName(); // return "User" User::hsFinder(); // return "App\User" Role::hsFinder(); // return "Orchestra\Model\Role"