asb/morphmtm

本软件包为您提供一个模块,可自动添加(模型、迁移等)需要文件,并将 Morph 多对多关系添加到您的项目中,同时附带常用基本命令,从而最大程度地减少您的试错操作。

1.1.0 2024-09-22 14:25 UTC

This package is auto-updated.

Last update: 2024-09-22 14:31:48 UTC


README

也许对于您来说,实现一系列模型和重复的关系是无聊的、耗时且令人厌烦的,您将不得不复制您之前的代码或重构它们,这将是一种时间浪费。
本软件包为您提供一个模块,可自动添加(模型、迁移等)需要文件,并将 Morph 多对多关系添加到您的项目中,同时附带常用基本命令。
这最大限度地减少了您的试错操作。

如何使用此软件包

您不再需要定义关系,只需在应用模型的模型中添加必要的属性 Has+yourModel(如这个 => hasStatus)即可。

要求

该软件包需要 PHP 8 或更高版本。Laravel 软件包还要求 Laravel 10 或更高版本。

快速入门

  1. 安装

    composer require asb/morphmtm
    
  2. 运行以下命令以发布软件包的配置文件:

    php artisan vendor:publish --tag=morph-mtm-config
    
  3. 自动加载

    默认情况下,模块类不会自动加载。您可以使用 psr-4 自动加载您的模块。例如

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Rack\\": "Rack/"
        }
    }
    

    提示:不要忘记在之后运行 composer dump-autoload
    在一个创建分类模块的示例中,我将解释如何使用它。

  4. 构建模块

    php artisan mtm:build *模块名称*

    php artisan mtm:build category
    in continue the command, you will be asked to named,
    of course, you can confirm and pass the default value by pressed the enter key,
    but some default words may not be to your liking.`
    
    What is the Model Name [Category]:
    >[enter]
     What is the Model Plural Name [categories]:
    >[enter]
    What is the Model Relation Name [categoryable]:
    >categorizable //Here the default name of the relationship is not good, and we changed it.

    提示:如果您需要删除模块,可以使用此命令
    php artisan mtm:remove 模块名称

  5. 在您的模型中添加必要的属性

    //The class model requires these trait.
    use HasCategory; //has+yourModelName
  6. 使用预定义函数

  • 获取所有具有分类的模型。

    提示:所有函数都可以使用以下格式调用静态(MTM+modelName):

     one example : MTMCategory::getModelsHave('new')
    
    getModelsHave(string|ID $MTMmodel)
  • 获取模型的所有分类。
    getCategories(Model $model)
  • 通过标题或 ID 检查模型是否具有此分类。
    hasCategries(string|ID $model,string $MTMmodel)
  • 通过标题或 ID 为模型分配一个分类。
    assignCategory(Model $model,string|ID $MTMmodel)
  • 通过标题或 ID 向模型添加一个分类。
    addCategory(Model $model,string|ID $MTMmodel)
    • 从模型更新一个分类并替换为新分类或现有分类。
    updateCategory(Model $model,string|ID $MTMmodel,string|ID $newMTMmodel)
    • 通过标题或 ID 从模型中删除一个分类。
    removeCategory(Model $model,string|ID $MTMmodel)
    • 从模型中删除所有分类。
    removeAllCategory(Model $model)
  1. 在模块中使用模型的 CRUD

    • 通过新的标题创建一个分类。
    createCategoryModel(string $MTMmodel)
    • 获取所有分类。如果调用时带有 "true" 参数,将获取所有已删除的分类。
    getAllCategoryModel(bool $onlyTrashed=false)
    • 通过标题或 ID 获取一个分类。
     getCategoryModel(string|ID $MTMmodel)
    • 通过标题或 ID 更新一个分类并替换为新标题。
    updateCategoryModel(string|ID $MTMmodel, string $update_Category):
    • 通过标题或 ID 删除一个分类并从所有模型中删除分类。
     removeCategoryModel(string|ID $MTMmodel) 
    • 通过标题或 ID 恢复一个分类。
     restoreCategoryModel(string|ID $MTMmodel)