enriquejlicona / dhosa
Laravel Eloquent 的热插拔
v2.0.0
2022-03-09 19:38 UTC
Requires
- php: ^7.3 || ^8.0
- illuminate/database: ^6.0 || ^7.0 || ^8.0 || ^9.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 not auto-updated.
Last update: 2024-09-20 05:38:12 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"