Laravel Eloquent 的热插拔

v2.0.0 2022-03-09 19:38 UTC

This package is not auto-updated.

Last update: 2024-09-20 05:38:12 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

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"