laravel-core-modules/core-modules-maker

这是我创建的包 core-modules-maker

This package is auto-updated.

Last update: 2024-09-27 18:27:30 UTC


README

Latest Version on Packagist Tests Action Status Code Style Action Status Total Downloads MIT Software License

关于 Laravel Core Modules Maker

这是一个简单且可扩展的包,通过服务和仓库来提高 Laravel 的开发效率。

Corine BOCOGA 创建

支持我们

我们投入了大量资源来创建最好的开源软件包。您可以购买我们的付费产品来支持我们 购买我们的付费产品

我们非常感谢您从家乡寄给我们明信片,并说明您正在使用我们的哪些包。您可以在我们的联系我们页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。

目录

旧版本文档

您正在阅读 6.x 版本的文档。

  • 如果您使用的是 Laravel 8,请参阅 4.x 的文档
  • 如果您使用的是 Laravel 7,请参阅 2.x 的文档
  • 如果您使用的是 Laravel 6 或更低版本,请参阅 1.x 的文档

请参阅升级指南,了解如何升级到最新版本。

指南

我写了一篇关于使用laravel-enum的博客文章:https://corine.b.github/blog/using-service-repository-in-laravel

安装

您可以通过 composer 安装此包

composer require laravel-core-modules/core-modules-maker:version

配置

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="core-modules-maker"

这是已发布的配置文件的内容

return [
];

命令

迁移管理

此命令允许您轻松地在 Laravel 应用程序中创建新的迁移文件。迁移是管理数据库模式的重要组成部分,此命令为您简化了此过程。

您可以使用以下 Artisan 命令来生成新的迁移类文件

php artisan generate:migration {name} [options]
  • {name}:迁移文件名称(例如,CreateUsersTable)。
  • [options]:可选。迁移生成时的额外选项或标志。

创建新的迁移文件

要创建具有指定 {name} 的新迁移文件,请运行以下命令

php artisan generate:migration {name}

示例

您可以使用以下 Artisan 命令来生成新的迁移类

php artisan generate:migration CreateUsersTable

将 CreateUsersTable 替换为您想要的迁移名称。此命令简化了在 Laravel 应用程序中创建迁移文件的过程。

其他选项

您可以使用可选的 [选项] 来灵活地自定义迁移。以下是一些使用这些选项的示例

创建表

此选项便于生成一个用于创建新数据库表的迁移文件。通过使用 --create 标志,您可以指定创建表的意图。要个性化此过程,请将 {table} 占位符替换为您希望使用的表名。以下是指令结构

php artisan generate:migration {name} --create={table}
  • {name}:迁移文件名称(例如,CreateUsersTable)。
  • --create:此标志表示迁移文件旨在创建新表。
  • {table}:将此占位符替换为您希望创建的表名。例如,users
示例

假设您想创建一个名为 "posts" 的表。您可以使用以下命令

php artisan generate:migration CreatePostsTable --create=posts

这将生成一个用于在数据库中创建 "posts" 表的迁移文件。

注意: {table} 的值应由您指定以定义要创建的表名。

指定列

要定义迁移中的特定列,请使用 --columns 选项。例如

您可以使用 --columns 选项定义迁移中的特定列。此功能允许您自定义正在创建的表的结构。以下是指令结构:以下是如何使用它的示例

php artisan generate:migration {name} --create={table} [--columns='{"column1": {"type": "datatype1", "options": "value"}, "column2": {"type": "datatype2", "options": "value"}, ...}']
  • {name}:迁移文件的名字。

  • --create:此标志表示迁移文件旨在创建新表。

  • {table}:您希望创建的表的名字。

  • --columns:此标志允许您指定要包含在表中的列。值应为一个 JSON 编码的 schema 对象,该对象定义了列名、类型和任何附加属性,如默认值或可空属性。

  • JSON 结构:JSON 编码的 schema 应由键值对组成,其中每个键代表一个列名,相应的值是一个定义列属性的嵌套对象。以下是 schema 结构的分解

    • key:代表 JSON 编码对象键值。
      • "name":代表列名。
    • value:对应的值是一个定义列属性的嵌套对象。指定列的数据类型,例如 "string"、"integer"、"decimal" 等。用 "" 替换为所需的数据类型。
      • "type": "string":指定列的数据类型,例如 "string""text""integer""decimal""enum" 等。用 "string" 替换为所需的数据类型。
      • "default: "":可选地,您可以设置列的默认值。用 "" 替换为所需的默认值。
      • "nullable": false:指定列不能有 NULL 值(如果可以可空,将 true 改为 false)。

    在 JSON 结构中,用列名作为键定义每个列,并包含一个包含其类型和任何附加属性的嵌套对象。

示例

假设您想创建一个名为 "CreateProductsTable" 的迁移文件,并创建一个包含特定列如 "reference""name""price""description""products" 表。您可以使用以下命令

php artisan generate:migration CreateProductsTable --create=products --columns='{"reference": {"type": "string"}, "name": {"type": "string"}, "price": {"type": "decimal", "default": "0.00"}, "description": {"type": "string", "nullable": true}}'

在提供的示例中,我们创建了一个名为 "CreateProductsTable" 的迁移文件,以生成具有以下列的 "products" 表

  • reference:类型为 string
  • name:类型为 string
  • price:类型为 decimal,默认值为 "0.00"
  • description:类型为 string,可空。

--columns 选项允许您定义每个列的数据类型和附加选项,如默认值和列是否可空。

此命令简化了创建具有特定列结构的迁移文件的过程,该结构符合您的数据库模式需求。

使用Laravel迁移编辑数据库表模式

在Laravel中,您可以使用迁移来高效地管理和修改数据库表模式。这允许您在不直接修改数据库的情况下更改表,确保您的更改是版本控制的,并且在需要时可以回滚。本指南解释了如何使用Laravel迁移编辑数据库表模式。

php artisan generate:migration {name} --action={action_option} --table={exist_table_name} [--columns={table_schema}]
  • {name}:这是迁移文件名称的占位符,您应该提供。建议使用描述性的名称,反映您对数据库表模式的目的或更改。例如,如果您正在向表中添加新列,您可以将其命名为 AddColumnsToProductsTable。

  • --action:这是一个可选标志,用于指示您要对数据库表执行的操作类型。它可以是 addmodifydelete 等值,以指定模式更改的性质。如果没有提供,则默认操作可能被假定。

  • {action_option}:这是要执行的具体操作选项的占位符,例如 addmodifydelete。您应根据模式更改替换为适当操作。

  • --table:此标志允许您指定您打算修改的现有数据库表名称。将 {exist_table_name} 替换为您想编辑的实际表名。

  • {exist_table_name}:这是您想修改的现有数据库表名称的占位符。您应将其替换为您打算编辑的实际表名。

  • --columns:此标志用于指定您想要对表进行的模式更改,特别是在添加、修改或删除列时。将 {table_schema} 替换为您想应用的实际模式更改。

  • {table_schema}:这是您想对表进行的模式更改的占位符,例如添加或修改列。您应将其替换为您想应用的特定模式更改,格式为JSON或其他适当格式。

  • --action={action_option}:这是一个可选标志,允许您指定迁移中要执行的操作。将 {action_option} 占位符替换为所需的操作。常见操作包括 addmodifydelete。如果没有指定,则默认操作通常是 add

  • --table={exist_table_name}:这是一个可选标志,其中您应将 {exist_table_name} 替换为您想修改的现有表名。它表示迁移将更改的特定表。如果您正在创建新表,则不需要使用此标志。

  • --columns={table_schema}:这是一个可选标志,其中您应将 {table_schema} 替换为JSON编码的模式定义,描述您想对表进行的更改。这包括指定您要添加或修改的列的名称、类型和属性。

总之,此命令语法允许您生成具有特定名称、操作和可选参数的Laravel迁移文件,这些参数定义了目标表和您想应用的模式更改。迁移是版本控制和管理工作应用程序中数据库模式更改的强大方式。

为了创建一个用于编辑数据库表结构的迁移文件,请使用以下命令:

通过向现有表添加新列来编辑数据库表结构

在Laravel中,您可以通过创建迁移来高效地修改应用程序的数据库结构。本节概述了如何使用php artisan generate:migration命令生成一个专门用于向现有数据库表添加新列的迁移文件。

用法

要创建一个用于向现有表添加新列的迁移,可以使用以下命令:

php artisan generate:migration {name} --action=add --table={exist_table_name} [--columns={table_schema}]
  • {name}:迁移文件的名称(例如,AddColumnsToProductsTable)。

  • --action=add:此标志指定迁移文件旨在向现有表添加新列。

  • --table={exist_table_name}:这是一个可选标志,其中您应将 {exist_table_name} 替换为您想修改的现有表名。它表示迁移将更改的特定表。如果您正在创建新表,则不需要使用此标志。

  • --columns={table_schema}:这是一个可选标志,其中您应将 {table_schema} 替换为JSON编码的模式定义,描述您想对表进行的更改。这包括指定您要添加或修改的列的名称、类型和属性。

示例

假设您在Laravel应用程序的数据库中有一个名为"products"的现有表,并且您想添加两个新列:"color"和"size"。您可以使用以下命令创建一个用于此任务的迁移文件

php artisan generate:migration AddColorAndSizeToProductsTable --action=add --table=products --columns='{"color": {"type": "string"}, "size": {"type": "string"}}'

此示例演示了如何构建命令以创建一个迁移文件,该文件将指定的列添加到现有的"products"表中。

通过修改现有表中的现有列结构来编辑数据库表结构

在Laravel中,您可以通过创建迁移轻松地修改应用程序的数据库模式。本节概述了如何使用php artisan generate:migration命令生成一个旨在修改现有数据库表中现有列结构的迁移文件。

用法

要创建此目的的迁移文件,可以使用以下命令格式:

php artisan generate:migration {name} --action=alter --table={existing_table_name} [--columns={altered_columns_schema}]
  • {name}:迁移文件的名称(例如,AlterProductColumns)。

  • --action=alter:表示迁移的目的是修改表中的现有列结构。

  • --table={exist_table_name}:这是一个可选标志,其中您应将 {exist_table_name} 替换为您想修改的现有表名。它表示迁移将更改的特定表。如果您正在创建新表,则不需要使用此标志。

  • --columns={altered_columns_schema}:这是一个可选标志,其中您应将{altered_columns_schema}替换为JSON编码的模式定义,该定义描述了您想要对表进行的更改。这包括指定要添加或修改的列的名称、类型和属性。

示例

考虑一个场景,您在Laravel应用程序的数据库中有一个名为"products"的现有表。您想修改两个现有列:"price"和"description",更改它们的数据类型并添加约束。您可以使用以下命令生成此任务的迁移文件

php artisan generate:migration AlterProductColumns --action=alter --table=products --columns='{"price": {"type": "decimal", "precision": 10, "scale": 2}, "description": {"type": "text", "nullable": true}}'

此示例演示了如何构建命令以创建一个迁移文件,该文件将修改现有的"products"表中指定列的模式。

通过从现有表中删除现有列来编辑数据库表结构

在Laravel中,管理和适应您应用程序的数据库结构是开发的基本方面。本节概述了如何利用php artisan generate:migration命令创建一个针对从现有数据库表移除现有列的定制迁移文件。

用法

要创建此目的的迁移文件,可以采用以下命令格式:

php artisan generate:migration {name} --action=delete --table={existing_table_name} [--columns={deleted_columns}]
  • {name}:迁移文件的名称(例如,DeleteColumnsFromUsersTable)。

  • --action=delete:此标志指定迁移的主要目标是删除表中的现有列。

  • --table={exist_table_name}:使用此可选标志指定要从其中删除列的现有表名称。它标识了迁移的目标表。如果您正在创建新表,则不需要使用此标志。

  • --columns={deleted_columns}:这是一个可选标志,允许您提供要从表中删除的列的JSON编码定义。包括您希望删除的列的名称。

示例

考虑一个场景,在你的Laravel应用程序数据库中已经存在一个名为"users"的表。你需要移除两个列:"phone_number"和"address"。你可以使用以下命令生成一个迁移文件来完成这个任务

php artisan generate:migration DeletePhoneAndAddressColumnsFromUsersTable --action=delete --table=users --columns='["phone_number", "address"]'

这个示例说明了如何构建命令来创建一个针对从现有"users"表中移除指定列的迁移文件。

通过修改现有表编辑数据库表架构

在Laravel中,适应和优化应用程序的数据库架构的能力至关重要。本节概述了如何使用php artisan generate:migration命令创建一个针对修改现有数据库表的迁移文件。

用法

为了创建一个用于此目的的迁移文件,你可以使用以下命令格式

php artisan generate:migration {name} --action=modify --table={existing_table_name} [--changes={table_modifications}]
  • {name}:迁移文件名(例如,ModifyProductTable)。

  • --action=modify:表明迁移的目标是修改现有表的架构。

  • --table={exist_table_name}:使用此可选标志来指定需要修改的现有表名。它标识了迁移的目标表。如果你正在创建一个新表,则不需要使用此标志。

  • --changes={table_modifications}:这是一个可选标志,允许你提供JSON编码的定义,说明你打算应用到表中的更改。这些更改可能包括修改列、添加或删除索引,或对表的架构进行其他调整。

示例

假设你在Laravel应用程序的数据库中有一个名为"products"的现有表。你需要通过修改"price"列、添加一个"is_featured"列以及在"name"列上创建一个新的索引来修改这个表。你可以使用以下命令生成一个用于此任务的迁移文件

php artisan generate:migration ModifyProductTable --action=modify --table=products --changes='{"modify": {"price": {"type": "decimal", "precision": 10, "scale": 2}, "add": {"is_featured": {"type": "boolean", "default": false}}, "index": {"name": {"type": "index"}}}}'

这个示例演示了如何构建命令来创建一个针对在现有"products"表中修改指定元素的迁移文件。

注意:通过为迁移需求适当地使用--action选项,你可以生成针对特定数据库架构更改的迁移文件,无论是添加修改还是删除列。

--action选项在处理涉及各种数据库架构更改的迁移文件时提供了清晰性和定制性。

指定数据库连接

默认情况下,迁移使用在Laravel应用程序中配置的默认数据库连接。但是,你可以使用--connection选项指定不同的数据库连接。以下是如何与其他迁移选项结合使用它的方法

php artisan generate:migration {name} --create={table} [--connection={connection_name}]
  • {name}:迁移文件的名字。
  • --create:此标志表示迁移文件旨在创建新表。
  • {table}:您希望创建的表的名字。
  • --connection:此标志允许你在生成迁移文件时指定不同的数据库连接。
  • {connection_name}:你想要创建的表名。
示例

假设你已经修改了迁移文件,需要重新运行它们以更新数据库架构。你可以使用--connection选项来确保迁移使用特定的数据库连接执行,无论它们之前的状态如何。

php artisan generate:migration CreateNewsTable --create=news --connection=redis

此选项在Laravel应用程序中配置了多个数据库连接时非常有用,你想为特定连接创建迁移。

当你需要在对默认数据库连接以外的数据库连接上执行迁移时,请使用--connection选项。这在多数据库Laravel应用程序中特别有用。

使用模型生成迁移

在Laravel中,为与Eloquent模型关联的数据库表创建迁移很常见。php artisan generate:migration命令允许你使用--model选项生成与迁移关联的Eloquent模型。以下是如何使用它的方法

php artisan generate:migration {name} --create={table} [--model={model_class}]
  • {name}:迁移文件的名字。
  • --create:此标志表示迁移文件旨在创建新表。
  • {table}:您希望创建的表的名字。
  • --model:此标志允许你生成与迁移关联的Eloquent模型。
  • {model_class}:您想要生成的 Eloquent 模型的名称。您想要与迁移关联的模型类名称
示例

假设您想要创建一个名为 "CreatePostsTable" 的迁移文件来生成一个 "posts" 表,并将其与名为 "Post" 的现有模型类关联。您可以使用以下命令

php artisan generate:migration CreateProductsTable --create=products --model=Product

通过指定模型,您在迁移和模型之间建立联系,使得使用 Laravel 的 Eloquent ORM 处理表及其数据变得更加容易。

通过包含 --model 选项并指定 "Post" 模型类,您将迁移与 "Post" 模型关联起来。这种关联允许您无缝地使用 Eloquent 方法与 "posts" 表进行交互。此命令将生成一个创建 "products" 表的迁移文件,并创建一个与此表关联的名为 "Product" 的 Eloquent 模型。

使用 --model 选项可以简化创建应用程序数据库表迁移和模型的过程。

指定自定义迁移路径

默认情况下,Laravel 将迁移文件存储在 database/migrations 目录中。但是,您可以在生成迁移文件时使用 --path 选项指定自定义路径。以下是如何与其他迁移选项结合使用它

php artisan generate:migration {name} --create={table} [--path={custom_path}]
  • {name}:迁移文件的名字。
  • --create:此标志表示迁移文件旨在创建新表。
  • {table}:您希望创建的表的名字。
  • --path:此标志允许您指定存储迁移文件的自定义路径。
  • {custom_path}:您想要存储迁移文件的自定义路径。
示例

假设您想将迁移文件存储在名为 "custom_migrations" 的自定义目录中,而不是默认的 database/migrations 目录。您可以使用 --path 选项来指定自定义路径

php artisan generate:migration CreateProductsTable --create=products --path=modules/Products/database/migrations

通过使用 --path 选项,您可以以适合您的项目结构和偏好的方式组织迁移文件。这在处理具有特定目录布局的复杂项目时尤其有用。

--path 选项在您需要将迁移文件与默认的 database/migrations 目录分开时非常有价值,这使得管理大型项目中的迁移更加容易。

注意:请记住,当使用 --path 选项时,您应该提供从 Laravel 项目根目录开始的相对路径。

强制执行迁移文件

在某些情况下,您可能需要强制生成一个迁移文件,即使已经存在具有相同名称的迁移文件。使用 --force 选项可以做到这一点。以下是对命令结构的说明

php artisan generate:migration {name} --create={table} [--force]
  • {name}:迁移文件的名字。
  • --create:此标志表示迁移文件旨在创建新表。
  • {table}:您希望创建的表的名字。
  • --force:此标志允许您强制生成迁移文件,无论是否存在具有相同名称的文件。
示例:

假设您已对迁移文件进行了更改,需要重新运行它们以更新数据库模式。您可以使用 --force 选项确保迁移再次执行,无论它们之前的状态如何。

php artisan generate:migration CreateUsersTable --create=users --force

注意:请谨慎使用 --force 选项,因为它将覆盖具有相同名称的任何现有迁移文件。这可以在需要使用更新规格重新生成表迁移文件或在开发过程中解决冲突时很有用。

模型管理

在 Laravel 中,模型通过定义数据的结构和行为在构建强大的应用程序中起着至关重要的作用。使用 php artisan generate:model 命令可以简化创建模型的过程,使得建立数据库连接、关系和自定义配置更加容易。

您可以使用以下 Artisan 命令来生成新的模型类文件

php artisan generate:model {name} [options]
  • {name}:将 {name} 替换为您希望模型类具有的名称。此命令将创建一个具有此名称的新模型文件。
  • [options]:可选。额外的选项或标志,用于自定义模型生成过程。

生成新的模型文件

要创建一个具有指定 {name} 的新模型文件,请运行以下命令

php artisan generate:model {name} --table={table_name}
  • {name}:将 {name} 替换为您希望模型类具有的名称。此命令将创建一个具有此名称的新模型文件。
  • --table={table_name}:指定与模型关联的数据库表。此选项建立模型与表之间的关系。

示例

假设您想要创建一个用于管理应用程序中“Product”实体的模型,并将其与“products”数据库表关联。您可以使用以下命令

php artisan generate:model Product --table=products

此命令将在您的Laravel项目中生成一个新的“Product”模型,与其关联的“products”表。它为您定义模型的行为和属性提供了一个起点。

其他选项

除了基本的模型生成外,php artisan generate:model 命令还提供了额外选项,以便根据您的需求定制模型创建过程。让我们探索这些选项,以增强您的Laravel应用程序开发

  • 生成 Pivot 模型:通过轻松创建 Pivot 模型简化多对多关系。使用 --pivot 选项简化了针对 Pivot 表的模型的生成,通常用于多对多关系。

  • 指定可填充属性:使用 --fillable 选项自定义模型的可填充属性。此功能允许您精确控制模型中哪些属性可以批量分配。

  • 创建仓库:使用 --repository 选项生成一个模型以及相关的仓库。当在应用程序中遵循仓库模式时,这很有益。

  • 指定自定义连接:您可以使用 --connection 选项指定特定的数据库连接。这允许您在生成特定表时将模型与特定数据库关联。

生成 Pivot 模型

通过在 php artisan generate:model 命令中使用 --pivot 选项,轻松生成 Pivot 模型,从而简化 Laravel 中的多对多关系。

要为 Pivot 表生成新的模型,您可以使用以下命令

php artisan generate:model {name} --table={table_name} [--pivot]
  • {name}:您希望创建的模型类名称。
  • --table={table_name}:指定与模型关联的数据库表。此选项建立模型与表之间的关系。
  • --pivot:此选项告诉 Laravel 生成一个特定于 Pivot 表的模型。Pivot 表通常用于在多对多关系中连接两个其他表。
示例:

假设您有一个名为 user_products 的 Pivot 表,它将 productsusers 表连接起来以形成多对多关系。您可以使用以下命令生成此表的 Pivot 模型

php artisan generate:model UserProduct --table=user_products --pivot

此命令将创建一个 UserProduct 模型文件,允许您在 Laravel 应用程序中处理 Pivot 表。

注意: --pivot 选项简化了 Pivot 模型的创建,使您能够轻松管理 Laravel 应用程序中的复杂多对多关系。简化代码,提高组织性,并充满信心地进行构建。

指定可填充属性

您可以使用 --fillable 选项定义模型的可填充属性

php artisan generate:model {name} --table={table_name} [--fillable={attributes}]
  • {name}:您希望创建的模型类名称。
  • --table={table_name}:指定与模型关联的数据库表。此选项建立模型与表之间的关系。
  • {table_name}:将此占位符替换为您希望建立关系的表名称。
  • --fillable={attributes}:此选项允许您指定模型的可填充属性。将 {attributes} 替换为您想要设置为可填充的属性名称。
示例

假设您想要创建一个与“products”表关联的“Product”模型,并定义可填充属性“name”、“description”和“price”。您可以使用以下命令

php artisan generate:model Product --table=products --fillable=name,description,price

此命令将生成一个与“products”表关联的“Product”模型,并将指定的属性设置为可填充。

注意: 使用 php artisan generate:model 命令中的 --fillable 选项,您可以高效地自定义模型的可填充属性,并使其符合Laravel应用程序的需求。

创建仓库

要生成一个新的模型以及相应的仓库,可以使用以下命令

php artisan generate:model {name} --table={table_name} [--repository] [--repository-namespace[={namespace}]]
  • {name}:您希望创建的模型类名称。
  • --table={table_name}:指定与模型关联的数据库表。此选项建立模型与表之间的关系。
  • --repository:此选项告诉Laravel在模型旁边创建一个仓库。仓库是一种常用的设计模式,用于抽象数据库交互并使您的代码更有条理。
  • {table_name}:将此占位符替换为您希望建立关系的表名称。
  • --repository-namespace={namespace}:可选,您可以使用此标志指定生成的仓库的命名空间。将 {namespace} 替换为您仓库所需的命名空间。
示例

假设您想创建一个名为 Product 的模型,将其与 products 数据库表关联,生成相应的仓库,并将仓库放置在自定义命名空间 App\\Repositories\\Products 中。您可以使用以下命令

php artisan generate:model Product --table=products --repository --repository-namespace=App\\Repositories\\Products

此命令将在您的Laravel项目中生成与 products 表关联的 Product 模型以及位于 App\Repositories\Product 命名空间中的 ProductRepository 类。您可以使用此仓库来封装与 Product 模型相关的数据库操作。

注意: 使用 --repository--repository-namespace 选项以及 php artisan generate:model 命令,可以增强Laravel应用程序的可维护性和组织性,尤其是在处理复杂数据操作时。

指定自定义连接

要生成一个新的模型并将其与特定的数据库表关联,同时指定自定义数据库连接(如果需要),可以使用以下命令

默认情况下,迁移使用在Laravel应用程序中配置的默认数据库连接。但是,你可以使用--connection选项指定不同的数据库连接。以下是如何与其他迁移选项结合使用它的方法

php artisan generate:model {name} --table={table_name} [--connection[={connection_name}]]
  • {name}:您希望创建的模型类名称。

  • --table={table_name}:指定与模型关联的数据库表。此选项建立模型与表之间的关系。

  • {table_name}:将此占位符替换为您希望建立关系的表名称。

  • --connection:此标志允许你在生成迁移文件时指定不同的数据库连接。

  • --connection={connection_name}:可选,您可以使用此标志指定自定义数据库连接。如果您省略此标志,Laravel将使用您数据库配置中定义的默认连接。

  • {connection_name}:你想要创建的表名。

示例

假设你已经修改了迁移文件,需要重新运行它们以更新数据库架构。你可以使用--connection选项来确保迁移使用特定的数据库连接执行,无论它们之前的状态如何。

php artisan generate:model New --create=news --connection=mongodb

此命令将在您的Laravel应用程序中使用 "pgsql" 数据库连接生成一个与 news 表关联的 New 模型。

注意: 使用 --connection 选项以及 php artisan generate:model 命令,您可以自定义模型的数据库连接,尤其是在处理应用程序中的多个数据库连接时。

注意

php artisan generate:model 命令使您能够简化Laravel项目中模型创建。通过生成 repositoriespivot 模型、指定 fillable 属性和 custom database connections 的选项,您拥有了有效设计和组织应用程序数据层的工具。无论您是在构建简单的应用程序还是复杂系统,使用这些模型管理选项都将有助于提高Laravel项目可维护性和可扩展性。

仓库管理

命令概述

generate:repository 命令允许您在Laravel项目中生成仓库类。仓库是一种常用的设计模式,用于抽象数据库交互并提供应用程序业务逻辑和数据访问之间的清晰分离。

命令签名

php artisan generate:repository 
    {name : The name of the repository}
    {--model= : The name of the associated model repository}
    {--modules : The base path to the repository class}
    {--base_path : The base path to the repository class}
    {--path= : The path to the repository class}
    {--namespace= : The namespace of the repository class}
    {--force : Force create the repository}

命令选项

  • {name}:您要生成的仓库名称。
  • --model:可选,仓库关联的模型名称。
  • --modules:可选,仓库类的基础路径。
  • --base_path:可选,仓库类的基础路径。
  • --path:可选,仓库类的路径。
  • --namespace:可选,仓库类的命名空间。
  • --force:可选,使用此标志强制创建仓库,即使它已存在。

命令使用

基本使用

要生成一个仓库,您可以运行以下命令

php artisan generate:repository {name}

{name} 替换为您想要的仓库名称。

关联模型

您可以使用 --model 选项将模型与仓库关联。当您有一个与仓库交互的特定模型时,这很有用。

php artisan generate:repository {name} [--model={model_name}]

{model_name} 替换为关联模型的名称。

示例

假设您想创建一个名为 ProductRepository 的仓库,并与 Product 模型关联。您可以运行以下命令

php artisan generate:repository ProductRepository --model=Product

这将生成位于指定命名空间中的 ProductRepository 类,与 Product 模型关联。

自定义命名空间

您可以使用 --namespace 选项自定义生成的仓库的命名空间。这允许您将仓库放置在与您项目结构相匹配的特定命名空间中。

要自定义命名空间,只需在运行 generate:repository 命令时添加 --namespace 选项,后跟所需的命名空间。以下是一个示例

示例

假设您想创建一个名为 ProductRepository 的仓库,并与 Product 模型关联,并且希望它在 App\\Repositories\\Products 命名空间中。您可以运行以下命令

php artisan generate:repository ProductRepository --model=Product --namespace=App\\Repositories\\Products

在上面的示例中,仓库将在 App\Repositories\Products 命名空间中生成,与 Product 模型关联。

自定义命名空间为您提供了更好的组织,并确保您的仓库被放置在 Laravel 项目中的适当目录中。

自定义路径

除了自定义命名空间外,您还可以使用各种选项自定义仓库的基本路径和路径

  • --base_path:指定仓库类的基础路径。
  • --modules:指定仓库类的基础路径。
  • --path:指定仓库类的路径。

以下是如何在运行 generate:repository 命令时使用这些选项

php artisan generate:repository {name} [--base_path] [--path={custom_path}] [--modules]
  • {name} 替换为您想要的仓库名称。
  • --path:使用此标志来指示您希望放置仓库类的位置。
  • {custom_path}:设置仓库类的路径。
  • --modules:使用此标志来指示仓库类应位于 Modules 目录中。

自定义这些路径允许您控制生成的仓库类在 Laravel 项目目录结构中的位置。

要自定义路径,请在运行 generate:repository 命令时包含相关选项。以下是一些示例

自定义基本路径
php artisan generate:repository {name} [--base_path] [--modules]

在这个示例中,仓库将作为基本路径在 Modules 目录中生成。

自定义路径
php artisan generate:repository {name} [--path={custom_path}]

在这种情况下,仓库将作为路径在 Custom 目录中生成。

示例

假设您想创建一个名为 ProductRepository 的仓库,并与 Product 模型关联,并且希望它在 Laravel 项目文件夹的根目录下的特定路径的 modules 文件夹中。您可以运行以下命令

php artisan generate:repository ProductRepository --model=Product --base_path --modules path=Products\Repositories

这将生成位于指定命名空间中的 ProductRepository 类,与 Product 模型关联。

注意:自定义路径为您提供了对仓库类位置的高精度控制,使您能够维护适合项目需求的无缝且组织良好的项目结构。

强制创建仓库

如果您想强制创建仓库,即使它已经存在,您可以使用 --force 标志。

php artisan generate:repository {name} [--force]

示例

php artisan generate:repository ProductRepository --force

结论

generate:repository 命令简化了在 Laravel 项目中创建仓库类的过程,允许您在应用程序的逻辑和数据访问之间保持清晰和有序的关注点分离。使用此命令可以简化仓库创建过程,并提高 Laravel 应用程序的维护性。

服务管理

命令概述

《generate:service》命令是用于在Laravel项目中生成服务类的强大工具。服务有助于封装应用程序的业务逻辑并保持关注点的分离,使代码库更加有序和易于维护。

命令签名

php artisan generate:service 
    {name : The name of the service}
    {--base_path : The base path to the service class}
    {--path= : The path to the service class}
    {--namespace= : The namespace of the service class}
    {--modules : The base path folder of the service class}
    {--model= : The name of the associated model service}
    {--dto : The associated DTO (Data Transfer Object) for the service}
    {--force : Force create the service}

命令选项

  • {name}:您想要生成的服务的名称。
  • --model: (可选) 与服务关联的模型名称。
  • --modules: (可选) 在“模块”目录内服务类的基路径。
  • --base_path: (可选) 服务类的基路径。
  • --path: (可选) 服务类的路径。
  • --dto: (可选) 与服务关联的数据传输对象(DTO)的名称。
  • --namespace: (可选) 服务类的命名空间。
  • --force: (可选) 使用此标志强制创建服务,即使它已经存在。

命令使用

基本使用

要生成服务,请运行以下命令

php artisan generate:service {name}

{name} 替换为您希望的服务名称。

关联模型和DTO

您可以使用 --model--dto 选项分别将模型和数据传输对象(DTO)与服务关联。这对于您的服务与特定模型实体交互并需要DTO来处理数据传输非常有用。

要关联模型与服务,请使用 --model 选项后跟模型的名称

php artisan generate:service {name} [--model={model_name}]

在上面的命令中

  • {name}:您希望的服务类名称。

  • --model:此选项允许您指定服务将关联的模型。通过将模型与您的服务关联,您可以在服务的方法中轻松访问和操作与该模型相关的数据。

  • {model_name}:将此占位符替换为您希望与您的服务关联的模型名称。

示例

假设您想创建一个与Product模型关联的ProductService。您可以使用以下命令

php artisan generate:service ProductService --model=Product

注意:此命令将生成ProductService类并建立其与Product模型的关联,以便在服务中方便地对产品数据进行操作。

注意

要关联DTO与服务,只需使用--dto选项而不指定名称。这将使DTO选项成为可选的

php artisan generate:service {name} [--dto[=dto_name]]

在上面的命令中

  • {name}:您希望的服务类名称。
  • --dto:此选项允许您指定服务将关联的数据传输对象(DTO)。DTO用于在您的服务与其他应用程序部分之间处理数据传输。
  • [dto_name]:您可以选择提供要与服务关联的DTO的名称。如果您省略dto_name,则假定它为可选的。
示例

假设您想创建一个与名为UserDTO的DTO关联的UserService。您可以使用以下命令

php artisan generate:service UserService --dto=UserDTO

注意:此命令将生成UserService类并建立其与UserDTO的关联,以便在服务中处理数据传输。如果您不指定DTO名称,则--dto选项成为可选的,允许您以后决定是否要关联DTO与您的服务。

通过将模型和DTO与您的服务关联,您可以简化数据处理并提高Laravel应用程序的组织。

示例

例如,要生成与Product模型关联并使用CreateProductDTO和UpdateProductDTO进行数据传输的ProductRESTfulReadWriteService,您可以运行以下命令

php artisan generate:service ProductRESTfulReadWriteService --model=Product --dto

此命令将生成与Product模型关联的ProductRESTfulReadWriteService类并利用CreateProductDTO和UpdateProductDTO进行数据传输。

自定义命名空间

使用 generate:service 命令生成服务时,您可以使用 --namespace 选项自定义服务类的命名空间。以下是使用方法:

php artisan generate:service {name} --namespace={namespace_value}

在上面的命令中

  • {name}:您希望的服务类名称。
  • --namespace:此标志允许您指定服务类的期望命名空间。当使用 generate:service 命令生成服务时,您可以使用此选项定义服务类将要放置的命名空间。这为您组织 Laravel 应用程序的代码库提供了灵活性。
  • {namespace_value}:用您想用于服务类的自定义命名空间替换此占位符。使用 generate:service 命令与 --namespace 选项时,应将 {namespace_value} 替换为您打算分配给服务类的期望命名空间。这有助于您有效地组织 Laravel 应用程序的代码库。
  • --namespace={namespace_value}:在运行 generate:service 命令时,您可以利用此选项为服务类设置自定义命名空间。只需在执行命令时将 {namespace_value} 替换为您期望的命名空间即可。此功能使您能够有效地组织 Laravel 应用程序的代码库。
示例

为了说明如何使用 --namespace 选项,假设您想创建一个名为 UserService 的服务类并将其放置在 App\\Services\\Products 命名空间中。您可以使用以下命令:

php artisan generate:service UserService --namespace=App\\Services\\Products

此命令将在 App\\Services\\Products 命名空间内生成 UserService 类,帮助您根据应用程序的结构组织服务。

强制服务创建

如果您想强制创建服务,即使它已经存在,也可以使用 --force 标志。

php artisan generate:repository {name} [--force]

示例

php artisan generate:repository ProductRepository --force

结论

generate:service 命令简化了在 Laravel 项目中创建服务类的过程,允许您保持干净的职责分离,并有效地封装应用程序的业务逻辑。

使用此命令以简化服务创建过程,并提高 Laravel 应用程序的维护性。

DTO(数据传输对象)管理

命令概述

在 Laravel 中,DTO(数据传输对象)对于处理应用程序不同部分之间的数据传输至关重要。php artisan generate:dto 命令简化了在 Laravel 项目中创建新的 DTO 类的过程。

您可以使用以下 Artisan 命令生成新的 DTO 类文件:

php artisan generate:dto {name} [options]
  • {name}:您期望的 DTO 类的名称。此命令将创建一个具有该名称的新 DTO 文件。
  • [options]:可选。额外的选项或标志,用于自定义 DTO 生成过程。

命令签名

php artisan generate:service 
                    {name : The name of the DTO class}
                    {--model= : The name the associate model dto}
                    {--modules : The base path to the dto class}
                    {--base_path : The base path to the dto class}
                    {--path= : The path to the dto class}
                    {--namespace= : The namespace of the dto class}
                    {--api-version=v1 : Specify the API version for the dto}
                    {--force : Force create the dto}';

命令选项

- **`{name}`**: The name of the dto you want to generate.
- **`--model`**: (Optional) The name of the associated model for the dto.
- **`--modules`**: (Optional) The base path to the dto class.
- **`--base_path`**: (Optional) The base path to the dto class.
- **`--path`**: (Optional) The path to the dto class.
- **`--namespace`**: (Optional) The namespace of the dto class.
- **`--force`**: (Optional) Use this flag to force the creation of the dto, even if it already exists.

命令使用

基本使用

要生成 DTO,请运行以下命令:

php artisan generate:dto {name}
  • {name}:用您期望的 DTO 类的名称替换 {name}。此命令将创建一个具有该名称的新 DTO 文件。
示例

假设您想在应用程序中创建一个用于处理用户数据传输的 DTO。您可以使用以下命令:

php artisan generate:dto UserDTO

此命令将在您的 Laravel 项目中生成一个名为 UserDTO 的新类,您可以使用它来组织和处理与用户相关的数据传输。

其他选项

除了基本的 DTO 生成外,php artisan generate:dto 命令还提供了额外的选项,可以根据您的需求定制 DTO 创建过程。

指定关联模型

您可以使用 --model 选项为 DTO 指定关联模型。这对于您的 DTO 与特定模型的数据结构紧密相关时很有用。

php artisan generate:dto {name} --model={model_name}
  • {name}:您期望的 DTO 类的名称。此命令将创建一个具有该名称的新 DTO 文件。
  • --model:可选。额外的选项或标志,用于自定义 DTO 生成过程。
  • {model_name}:可选。额外的选项或标志,用于自定义 DTO 生成过程。
  • --model={model_name}:指定关联模型的名称。此选项有助于您定义 DTO 与模型之间的关系。
示例

假设您想在应用程序中创建一个用于处理与模型关联的用户数据传输的 DTO。您可以使用以下命令:

php artisan generate:dto UserDTO --model=User

此命令将在您的Laravel项目中生成一个新的UserDTO类,您可以使用它来构建和管理用户相关数据传输。

自定义命名空间

您可以使用--namespace选项来自定义DTO类的命名空间。

php artisan generate:dto {name} [--namespace={namespace_value}]
  • {name}:表示您要创建的DTO类的名称。执行此命令将生成一个具有指定名称的新DTO文件。

  • --namespace:此选项为可选,但允许您为DTO定义自定义命名空间。

  • {namespace_value}:此参数也是可选的,允许您指定要分配给DTO类的所需命名空间。

此功能使您能够以符合应用程序架构和代码组织偏好的方式构建和管理DTO。

示例

为了说明如何在生成DTO时使用--namespace选项,假设您想要创建一个名为UserDTO的DTO并将其放置在App\DTOs命名空间内。您可以通过运行以下命令来完成此操作

php artisan generate:dto ProductDTO --namespace=App\\DTOs

此命令将生成具有指定命名空间的UserDTO类,确保它在Laravel应用程序的App\DTOs命名空间内组织。

注意:通过使用php artisan generate:dto命令中的--namespace选项,您可以定制DTO类的命名空间以符合Laravel应用程序的结构和组织。这有助于保持代码库整洁且结构良好。

指定API版本

如果您的DTO与特定API版本相关,您可以使用--api-version选项来指定它。

php artisan generate:dto {name} [ --api-version={version}]
  • {name}:您期望的 DTO 类的名称。此命令将创建一个具有该名称的新 DTO 文件。
  • --api-version:可选。此标志允许您指定DTO的API版本。
  • {version}:可选。您要关联DTO的版本号。
  • --api-version={version}:指定DTO的API版本。此选项有助于根据不同的API版本对DTO进行分类和管理。
示例

例如,假设您正在开发一个具有多个API版本的电子商务应用程序,并且您需要创建与API 2.0版本相关的DTO。您可以使用以下命令来生成与API版本2.0关联的DTO

php artisan generate:dto ProductDTO --api-version=v2

此命令将创建一个与API版本2.0关联的ProductDTO类,允许您在Laravel应用程序中维护针对不同API版本的DTO。

注意:通过使用php artisan generate:dto命令中的--api-version选项,您可以有效地根据不同的API版本对DTO进行分类和管理。这种组织有助于确保您的数据传输对象与每个API版本的具体需求和变化保持一致,从而提高应用程序数据处理的可维护性和可扩展性。

强制创建DTO

如果您想强制生成DTO文件,即使已存在具有相同名称的DTO文件,您也可以使用--force选项。

php artisan generate:dto {name} [--force]
  • {name}:您期望的 DTO 类的名称。此命令将创建一个具有该名称的新 DTO 文件。
  • --force:此选项允许您强制创建DTO文件,覆盖任何具有相同名称的现有文件。
示例

例如,假设您想创建一个用于管理应用程序中用户数据传输的DTO,并且与一个模型相关联。您可以使用以下命令强制生成DTO,确保它被创建或更新,无论是否存在任何现有文件

php artisan generate:dto UserDTO --force

通过使用php artisan generate:dto命令中的--force选项,您可以在Laravel应用程序中有效地创建和管理DTO。这在您需要确保DTO与数据结构保持同步时尤其有用,即使您对其进行了更改。

注意: 使用 --force 选项可以增强您在 Laravel 应用程序中创建和组织 DTO(数据传输对象)的能力。它确保您的数据传输过程保持流畅和结构化,适应应用程序数据模型的变化。

结论

DTOs 是现代 Laravel 应用程序中管理数据传输的一个关键组成部分。通过使用带有各种选项的 php artisan generate:dto 命令,您可以轻松地创建和定制 DTO 类,以满足特定应用程序的需求。

创建 DTO(数据传输对象)管理

命令概述

在 Laravel 中,管理 DTO 对于在您的应用程序中结构化数据传输至关重要。使用 php artisan generate:create-dto 命令可以简化创建专门为创建资源而设计的新 DTO 的过程。您可以使用以下 Artisan 命令来生成新的创建 DTO 类文件

php artisan generate:create-dto {name} [options]
  • {name}:您要生成的 dto 的名称。
  • [options]:可选。用于自定义创建 DTO 生成过程的附加选项或标志。

命令签名

php artisan generate:create-dto 
                    {name : The name of the DTO class}
                    {--model= : The name the associate model dto}
                    {--modules : The base path to the dto class}
                    {--base_path : The base path to the dto class}
                    {--path= : The path to the dto class}
                    {--namespace= : The namespace of the dto class}
                    {--api-version=v1 : Specify the API version for the dto}
                    {--force : Force create the dto}';

命令选项

  • {name}:您要生成的创建-dto 的名称。
  • --model=:可选。与 DTO 关联的模型名称。
  • --modules:可选。如果您想将 DTO 类打包在 "modules" 文件夹中,可以使用此选项。它允许您在名为 "modules" 的特定目录中组织您的 DTO。
  • --base_path:可选。此选项允许您指定 DTO 类的基本路径。如果您希望 DTO 类位于 Laravel 项目的根目录中,可以使用此选项。
  • --path=:可选。此选项允许您指定 Laravel 项目中 DTO 类的路径。您可以使用它来定义 DTO 类的位置。
  • --namespace=:可选。DTO 类的命名空间。
  • --api-version=:可选。指定 DTO 的 API 版本。
  • --force:可选。强制创建 DTO,覆盖具有相同名称的现有文件。

命令使用

基本使用

要生成创建 DTO,请运行以下命令

php artisan generate:create-dto {name}

{name} 替换为您想要的创建 DTO 名称。

附加选项

除了基本用法外,php artisan generate:create-dto 命令还提供了一些附加选项以进行更多定制

  • --model={model_name}:指定与 DTO 关联的模型名称。此选项有助于您定义 DTO 和模型之间的关系。

  • --base_path:指定 DTO 类的基本路径。您可以使用此选项来定义 DTO 的根目录。

  • --modules:设置 DTO 类的基本路径文件夹。如果您想将 DTO 组织在特定目录中,请使用此选项。

  • --path={path}:设置 DTO 类的路径。您可以使用此选项来指定项目内 DTO 类的位置。

  • --namespace[={namespace}]:定义 DTO 类的命名空间。您可以使用此选项将 DTO 放置在特定的命名空间中。

  • --api-version[={version}]:指定 DTO 的 API 版本。如果您的 DTO 与特定 API 版本相关,请使用此选项。

  • --force: 如果您想强制生成DTO文件,即使已经存在同名文件,也可以使用--force选项。

这些附加选项允许您根据特定项目需求定制DTO生成过程,为管理您的DTO提供灵活性和组织性。

指定关联模型

您可以使用--model选项为创建DTO指定一个关联模型。当您的创建DTO与特定模型的数据结构紧密相关时,这非常有用。

php artisan generate:create-dto {name} [--model={model_name}]
  • {name}:您要生成的创建-dto 的名称。
  • --model=:可选。与 DTO 关联的模型名称。
  • {model_name}: 可选。DTO关联模型的名称。
  • --model={model_name}: 指定关联模型的名称。此选项有助于您定义创建DTO与模型之间的关系。
示例

假设您想在应用中创建与User模型关联的创建DTO来处理资源创建时的用户数据传输,可以使用以下命令:

php artisan generate:create-dto UserCreateDTO --model=User

此命令将在您的Laravel项目中生成一个新的UserCreateDTO类,您可以使用该类在资源创建过程中结构化和管理与用户相关的数据传输。

强制创建

如果您想强制生成创建DTO文件,即使已存在同名创建DTO文件,也可以使用--force选项:当您的创建DTO与特定模型的数据结构紧密相关时,这非常有用。

php artisan generate:create-dto {name} [--force]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --force: 可选。此选项允许您强制创建创建DTO文件,覆盖任何同名现有文件。
示例

假设您想在应用中创建与User模型关联的创建DTO来处理资源创建时的用户数据传输,并强制创建,即使已存在UserCreateDTO文件:

php artisan generate:create-dto UserCreateDTO --force

此命令将在您的Laravel项目中生成一个新的UserCreateDTO类,您可以使用该类在资源创建过程中结构化和管理与用户相关的数据传输。

注意: 当您需要生成创建DTO文件而不受同名现有文件的阻碍时,--force选项是一种非常有用的工具。它允许您覆盖任何现有创建DTO文件,并确保您的Laravel项目保持所需的架构和组织。

指定API版本

如果您的创建DTO与特定API版本相关,您可以使用--api-version选项指定它。

php artisan generate:create-dto {name} [--api-version[={version}]]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --api-version: 可选。此选项允许您指定创建DTO所需的API版本。
  • {version}: 可选。您想与创建DTO关联的版本号。
  • --api-version[={version}]: 使用此选项指定创建DTO的API版本。它有助于根据不同的API版本对创建DTO进行分类和管理。
示例

假设您有一个版本为v2的API,您想为该版本创建一个名为ProductCreateDTO的创建DTO。您可以使用以下命令:

php artisan generate:create-dto ProductCreateDTO --api-version=v2

此命令将在您的Laravel项目中生成一个与API版本v2关联的ProductCreateDTO类。

注意: 当生成创建DTO时使用--api-version选项可以特别有用,因为它可以帮助您根据不同的API版本在Laravel应用程序中组织和管理DTO。这允许进行针对特定API要求的有效数据传输和结构化过程。

自定义命名空间

您可以使用--namespace选项自定义创建DTO类的命名空间。

php artisan generate:create-dto {name} [--namespace[={namespace_value}]]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --namespace: 可选。此选项允许您指定创建DTO的所需命名空间。
  • {namespace_value}: 可选。您想与创建DTO类关联的自定义命名空间。
  • --namespace[={namespace_value}]:使用此选项来设置创建 DTO 类所需的命名空间。它使您能够高效地在 Laravel 应用程序中组织您的创建 DTO。
示例

为了说明如何在生成创建 DTO 时使用 --namespace 选项,让我们假设您想创建一个名为 UserCreateDTO 的创建 DTO,并将其放置在 App\DTOs 命名空间中。您可以通过运行以下命令来完成此操作

php artisan generate:create-dto UserCreateDTO --namespace=App\\DTOs

此命令将生成具有指定命名空间的 UserCreateDTO 类,确保它在 Laravel 应用程序中的 App\DTOs 命名空间中组织。

注意:这些命令描述和示例为您提供对如何使用 php artisan generate:create-dto 命令在 Laravel 应用程序中高效管理数据传输对象 (DTOs) 的全面了解。利用各种选项和示例来定制 DTO 生成,以满足您特定项目的需求,增强数据传输和结构化过程。

自定义 DTO 目录结构

当使用 php artisan generate:create-dto 命令生成数据传输对象 (DTOs) 时,您可以自定义生成 DTO 的目录结构。您可以将以下选项结合起来,创建适合项目组织的目录结构

  • --base_path:如果您想在 Laravel 项目的基路径中生成 DTO,请使用此选项。它设置 DTOs 的根目录。

  • --modules:如果您的项目采用模块化结构,并且您想将 DTO 包含在“模块”文件夹中,请使用此选项。

  • --path:此选项允许您定义一个自定义路径,其中应生成创建 DTO 类。您可以在项目根目录相对于指定路径。

以下是您如何使用这些选项来创建创建 DTO 的自定义目录结构的方法

php artisan generate:create-dto {name} [--base_path] [--modules] [--path[={path}]]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --base_path:可选。使用此选项在 Laravel 项目的根目录生成创建 DTO 类。当包含时,创建 DTO 将放置在项目根目录,允许在应用文件夹之外进行组织。
  • --modules:可选。此选项允许您在 Laravel 项目的 modules 文件夹中生成创建 DTO 类。
  • --path:可选。使用此选项在 Laravel 项目中定义一个自定义路径,其中应生成创建 DTO 类。
  • {path}:可选。指定创建 DTO 应创建的自定义路径。
  • --path[={path}]:使用此选项设置创建 DTO 的自定义路径。它允许您根据项目结构指定 DTO 类在项目中的位置。
DTO 的自定义路径

要指定 DTO 生成的自定义路径,请使用 --path 选项

php artisan generate:create-dto {name} [--path[={path}]]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --path:可选。使用此选项在 Laravel 项目中定义一个自定义路径,其中应生成创建 DTO 类。
  • {path}:可选。指定创建 DTO 应创建的自定义路径。
  • --path[={path}]:使用此选项设置创建 DTO 的自定义路径。它允许您根据项目结构指定 DTO 类在项目中的位置。
示例

要在一个自定义路径(如 app/DTOs)中创建创建 DTO,可以使用以下命令

php artisan generate:create-dto OrderCreateDTO --path=app/DTOs

此命令将在指定的自定义路径中生成 OrderCreateDTO 类,允许您根据项目结构组织您的 DTO。

注意: --path 选项提供了灵活性,可以确定创建 DTO 生成的位置,使您能够遵守项目的组织约定。

自定义基路径

您可以使用 --base_path 选项自定义创建 DTO 类的基路径

php artisan generate:create-dto {name} [--base_path]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --base_path:可选。使用此选项在 Laravel 项目的根目录生成创建 DTO 类。当包含时,创建 DTO 将放置在项目根目录,允许在应用文件夹之外进行组织。
示例

要生成 Laravel 项目根目录中的创建 DTO 类,可以使用以下命令

php artisan generate:create-dto UserCreateDTO --base_path

此命令将在 Laravel 项目根目录中创建 UserCreateDTO 类。

在模块中组织

您可以使用 --modules 选项自定义创建 DTO 类的基路径

php artisan generate:create-dto {name} [--modules]
  • {name}: 您想要的创建DTO类名。此命令将创建一个具有此名称的新DTO文件。
  • --modules:可选。此选项允许您在 Laravel 项目的 modules 文件夹中生成创建 DTO 类。
示例

在 Laravel 项目的根目录下的 modules 文件夹中生成一个创建 DTO,可以使用以下命令:

php artisan generate:create-dto ProductCreateDTO --modules

此命令将在 modules 文件夹中创建 ProductCreateDTO 类。

额外

您可以将这些选项组合起来,以创建一个符合项目需求的自定义目录结构。以下是一些示例

  • 在基础路径的 modules 文件夹中放置创建 DTO
php artisan generate:create-dto {name} [--base_path] [--modules]

示例

php artisan generate:create-dto UserCreateDTO --base_path  --modules
  • 在基础路径中生成创建 DTO 的自定义文件夹
php artisan generate:create-dto {name} [--base_path] [--path[={path}]]

示例

php artisan generate:create-dto UserCreateDTO --base_path --path=Custom/Folders
  • 在基础路径的 modules 文件夹中组织创建 DTO 并指定自定义路径
php artisan generate:create-dto {name} [--base_path] [--modules] [--path[={path}]]

这种组合提供了结构化创建 DTO 的灵活性,以满足项目的特定需求。

示例

php artisan generate:create-dto UserCreateDTO --base_path  --modules --path=Custom/Folders

此示例生成一个包含 modules 文件夹和名为 Custom/Folders 的自定义路径的目录结构的 UserCreateDTO 类。

注意: 通过组合这些选项,您可以调整创建 DTO 的组织方式,以符合项目的特定需求。无论您是希望将它们保留在基础路径中,将它们打包到 modules 文件夹中,还是指定自定义路径,这些选项都提供了在 Laravel 应用程序中高效管理 DTO 所需的灵活性。

注意:这些命令描述和示例为您提供对如何使用 php artisan generate:create-dto 命令在 Laravel 应用程序中高效管理数据传输对象 (DTOs) 的全面了解。利用各种选项和示例来定制 DTO 生成,以满足您特定项目的需求,增强数据传输和结构化过程。

结论

管理 DTO 对于组织 Laravel 应用程序中的数据传输至关重要。php artisan generate:create-dto 命令简化了创建定制 DTO 的过程,这些 DTO 可满足项目的需求。通过使用提供的选项,您可以高效地结构和管理工作 DTO,从而提高数据传输和结构化过程。

更新 DTO (数据传输对象) 管理

命令概述

在 Laravel 中,管理 DTO 对于在应用程序中结构化数据传输至关重要。php artisan generate:update-dto 命令简化了创建用于创建资源的特定 DTO 的新类的过程。您可以使用以下 Artisan 命令生成新的更新 DTO 类文件

php artisan generate:update-dto {name} [options]
  • {name}:您要生成的 dto 的名称。
  • [options]:可选。用于自定义更新 DTO 生成过程的附加选项或标志。

命令签名

php artisan generate:update-dto 
                    {name : The name of the DTO class}
                    {--model= : The name the associate model dto}
                    {--modules : The base path to the dto class}
                    {--base_path : The base path to the dto class}
                    {--path= : The path to the dto class}
                    {--namespace= : The namespace of the dto class}
                    {--api-version=v1 : Specify the API version for the dto}
                    {--force : Force update the dto}';

命令选项

  • {name}:您要生成的更新 DTO 的名称。
  • --model=:可选。与 DTO 关联的模型名称。
  • --modules:可选。如果您想将 DTO 类打包在 "modules" 文件夹中,可以使用此选项。它允许您在名为 "modules" 的特定目录中组织您的 DTO。
  • --base_path:可选。此选项允许您指定 DTO 类的基本路径。如果您希望 DTO 类位于 Laravel 项目的根目录中,可以使用此选项。
  • --path=:可选。此选项允许您指定 Laravel 项目中 DTO 类的路径。您可以使用它来定义 DTO 类的位置。
  • --namespace=:可选。DTO 类的命名空间。
  • --api-version=:可选。指定 DTO 的 API 版本。
  • --force:可选。强制更新 DTO,覆盖同名现有文件。

命令使用

基本使用

要生成更新 DTO,请运行以下命令

php artisan generate:update-dto {name}

{name} 替换为您所需的更新 DTO 名称。

附加选项

除了基本用法外,php artisan generate:update-dto 命令还提供了几个其他选项,以实现更多定制

  • --model={model_name}:指定 DTO 的关联模型名称。此选项有助于您定义 DTO 和模型之间的关系。

  • --base_path:指定 DTO 类的基础路径。您可以使用此选项来定义 DTO 的根目录。

  • --modules:设置 DTO 类的基础路径文件夹。如果您想在特定目录中组织 DTO,请使用此选项。

  • --path={path}:设置 DTO 类的路径。您可以使用此选项指定 DTO 类在项目中的位置。

  • --namespace[={namespace}]:定义 DTO 类的命名空间。您可以使用此选项将 DTO 放置在特定的命名空间中。

  • --api-version[={版本}]:指定DTO的API版本。如果您的DTO与特定API版本相关联,请使用此选项。

  • --force:如果您想强制生成DTO文件,即使已存在同名DTO文件,也可以使用--force选项。

这些附加选项允许您根据特定项目需求定制DTO生成过程,为管理您的DTO提供灵活性和组织性。

指定关联模型

您可以使用--model选项为您的更新DTO指定相关模型。当您的更新DTO与特定模型的数据结构紧密相关时,这很有用。

php artisan generate:update-dto {name} [--model={model_name}]
  • {name}:您要生成的更新 DTO 的名称。
  • --model=:可选。与 DTO 关联的模型名称。
  • {model_name}: 可选。DTO关联模型的名称。
  • --model={模型名称}:指定关联模型的名称。此选项有助于定义更新DTO与模型之间的关系。
示例

假设您想更新与User模型关联的应用程序中资源创建期间处理用户数据传输的更新DTO。您可以使用以下命令:

php artisan generate:update-dto UserUpdateDTO --model=User

此命令将在您的Laravel项目中生成一个新的UserUpdateDTO类,您可以使用它来构建和管理资源创建期间与用户相关的数据传输。

强制创建

如果您想强制生成更新DTO文件,即使已存在同名更新DTO文件,也可以使用--force选项。当您的更新DTO与特定模型的数据结构紧密相关时,这很有用。

php artisan generate:update-dto {name} [--force]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --force:可选。此选项允许您强制更新更新DTO文件,覆盖任何同名现有文件。
示例

假设您想更新与User模型关联的应用程序中资源创建期间处理用户数据传输的更新DTO。您可以使用以下命令强制创建,即使已存在UserUpdateDTO文件:

php artisan generate:update-dto UserUpdateDTO --force

此命令将在您的Laravel项目中生成一个新的UserUpdateDTO类,您可以使用它来构建和管理资源创建期间与用户相关的数据传输。

注意:当您需要生成更新DTO文件而不受同名现有文件的阻碍时,--force选项非常有用。它允许您覆盖任何现有的更新DTO文件,并确保您的Laravel项目保持所需的架构和组织。

指定API版本

如果您的更新DTO与特定API版本相关联,您可以使用--api-version选项指定它。

php artisan generate:update-dto {name} [--api-version[={version}]]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --api-version:可选。此选项允许您指定更新DTO的所需API版本。
  • {版本}:可选。您想与更新DTO关联的版本号。
  • --api-version[={版本}]:使用此选项指定更新DTO的API版本。它有助于根据不同的API版本对更新DTO进行分类和管理。
示例

假设您有一个版本为v2的API,并且您想更新名为ProductUpdateDTO的更新DTO。您可以使用以下命令:

php artisan generate:update-dto ProductUpdateDTO --api-version=v2

此命令将在您的Laravel项目中为API版本v2生成一个相关的ProductUpdateDTO类。

注意:在生成更新DTO时使用--api-version选项对于在您的Laravel应用程序中根据不同的API版本组织和管理DTO特别有用。这允许进行针对特定API要求的数据传输和结构过程。

自定义命名空间

您可以使用--namespace选项自定义更新DTO类的命名空间。

php artisan generate:update-dto {name} [--namespace[={namespace_value}]]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --namespace:可选。此选项允许您指定更新DTO的所需命名空间。
  • {命名空间值}:可选。您想与更新DTO类关联的自定义命名空间。
  • --namespace[={命名空间值}]:使用此选项设置更新DTO类的所需命名空间。它使您能够有效地在您的Laravel应用程序中组织更新DTO。
示例

为了说明如何在生成更新 DTO 时使用 --namespace 选项,让我们假设您想更新一个名为 UserUpdateDTO 的更新 DTO,并将其放置在 App\DTOs 命名空间中。您可以通过运行以下命令来实现

php artisan generate:update-dto UserUpdateDTO --namespace=App\\DTOs

此命令将生成具有指定命名空间的 UserUpdateDTO 类,确保它在您的 Laravel 应用程序中的 App\DTOs 命名空间内组织。

注意: 这些命令描述和示例为您提供对如何使用 php artisan generate:update-dto 命令在 Laravel 应用程序中高效管理数据传输对象 (DTOs) 的全面理解。利用各种选项和示例,根据您的特定项目要求定制 DTO 生成,增强数据传输和结构化过程。

自定义 DTO 目录结构

当使用 php artisan generate:update-dto 命令生成数据传输对象 (DTOs) 时,您可以灵活地自定义 DTOs 生成的目录结构。您可以通过组合以下选项来更新适合您项目组织的目录结构

  • --base_path:如果您想在 Laravel 项目的基路径中生成 DTO,请使用此选项。它设置 DTOs 的根目录。

  • --modules:如果您的项目采用模块化结构,并且您想将 DTO 包含在“模块”文件夹中,请使用此选项。

  • --path:此选项允许您定义一个自定义路径,其中更新 DTO 类应该在您的 Laravel 项目中生成。您可以指定一个相对于项目根目录的路径。

以下是如何使用这些选项来更新更新 DTOs 的自定义目录结构的示例

php artisan generate:update-dto {name} [--base_path] [--modules] [--path[={path}]]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --base_path:可选。使用此选项在 Laravel 项目的根目录中生成更新 DTO 类。当包含时,更新 DTO 将放置在项目的根目录中,允许在 app 文件夹之外进行组织。
  • --modules:可选。此选项允许您在 Laravel 项目的 modules 文件夹中生成更新 DTO 类。
  • --path:可选。使用此选项在您的 Laravel 项目中定义一个自定义路径,其中更新 DTO 类应该生成。
  • {path}:可选。指定更新 DTO 应更新的自定义路径。
  • --path[={path}]:使用此选项设置创建更新 DTO 的自定义路径。它允许您根据您的项目结构指定 DTO 类在项目中的位置。
DTO 的自定义路径

要指定 DTO 生成的自定义路径,请使用 --path 选项

php artisan generate:update-dto {name} [--path[={path}]]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --path:可选。使用此选项在您的 Laravel 项目中定义一个自定义路径,其中更新 DTO 类应该生成。
  • {path}:可选。指定更新 DTO 应更新的自定义路径。
  • --path[={path}]:使用此选项设置创建更新 DTO 的自定义路径。它允许您根据您的项目结构指定 DTO 类在项目中的位置。
示例

要在一个自定义路径中更新更新 DTO,例如 app/DTOs,您可以使用以下命令

php artisan generate:update-dto OrderUpdateDTO --path=app/DTOs

此命令将在指定的自定义路径中生成 OrderUpdateDTO 类,允许您根据项目结构组织您的 DTOs。

注意: --path 选项提供了确定您的更新 DTOs 生成的位置的灵活性,允许您遵守项目的组织约定。

自定义基路径

您可以使用 --base_path 选项自定义更新 DTO 类的基路径

php artisan generate:update-dto {name} [--base_path]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --base_path:可选。使用此选项在 Laravel 项目的根目录中生成更新 DTO 类。当包含时,更新 DTO 将放置在项目的根目录中,允许在 app 文件夹之外进行组织。
示例

要在一个自定义路径中生成更新 DTO 类,您可以使用以下命令

php artisan generate:update-dto UserUpdateDTO --base_path

此命令将在 Laravel 项目的根目录中更新 UserUpdateDTO 类。

在模块中组织

您可以使用 --modules 选项自定义更新 DTO 类的基路径

php artisan generate:update-dto {name} [--modules]
  • {名称}:您希望更新的更新DTO类的名称。此命令将更新一个名为此名称的新DTO文件。
  • --modules:可选。此选项允许您在 Laravel 项目的 modules 文件夹中生成更新 DTO 类。
示例

要在一个 Laravel 项目根目录的 modules 文件夹中生成更新 DTO,您可以使用以下命令

php artisan generate:update-dto ProductUpdateDTO --modules

此命令将在一个 modules 文件夹中更新 ProductUpdateDTO 类。

额外

您可以将这些选项组合起来,以更新符合您项目需求的自定义目录结构。以下是一些示例

  • 将更新 DTOs 放置在基路径的 modules 文件夹中
php artisan generate:update-dto {name} [--base_path] [--modules]

示例

php artisan generate:update-dto UserUpdateDTO --base_path  --modules
  • 在基路径中生成更新 DTOs 的自定义文件夹
php artisan generate:update-dto {name} [--base_path] [--path[={path}]]

示例

php artisan generate:update-dto UserUpdateDTO --base_path --path=Custom/Folders
  • 在基路径的 modules 文件夹中组织更新 DTOs 并指定自定义路径
php artisan generate:update-dto {name} [--base_path] [--modules] [--path[={path}]]

此组合提供了灵活性,以构建符合您项目特定要求的更新 DTO。

示例

php artisan generate:update-dto UserUpdateDTO --base_path  --modules --path=Custom/Folders

以下示例生成了一个包含 modules 文件夹和自定义路径 Custom/Folders 的目录结构的 UserUpdateDTO 类。

注意: 通过组合这些选项,您可以定制更新 DTO 的组织方式,以满足项目的特定要求。无论您是希望将其保留在基本路径中,还是在 modules 文件夹中打包,还是指定自定义路径,这些选项都为您在 Laravel 应用程序中高效管理 DTO 提供了所需的灵活性。

注意: 这些命令描述和示例为您提供对如何使用 php artisan generate:update-dto 命令在 Laravel 应用程序中高效管理数据传输对象 (DTOs) 的全面理解。利用各种选项和示例,根据您的特定项目要求定制 DTO 生成,增强数据传输和结构化过程。

结论

管理 DTO 对于在 Laravel 应用程序中组织数据传输至关重要。使用 php artisan generate:update-dto 命令可以简化过程,允许您更新针对项目需求定制的自定义 DTO。通过使用提供的选项,您可以高效地构建和管理 DTO,增强数据传输和结构化过程。

创建请求类生成

generate:create-request Artisan 命令用于生成新的请求类。请求类是 Laravel 应用程序的关键部分,用于处理传入请求的输入验证和授权。

命令概述

您可以使用以下 Artisan 命令来生成新的请求类

php artisan generate:create-request {name?} [options]
  • {name?}:可选。要生成的创建请求类的名称。如果不提供,则命令将交互式提示您输入。
  • [options]:可选。用于自定义请求类生成过程的附加选项或标志。

命令签名

php artisan generate:create-request 
		    {name? : The name of the create request class}
		    {--base=FormRequest : The base class for the request}
		    {--dir=app/Http/Requests : The directory to store the request}
		    {--namespace=App\\Http\\Requests : The namespace for the request}
		    {--model= : The model class associated with the request}
		    {--controller=App\\Http\\Controllers : Generate a corresponding controller}
		    {--api-version=v1 : Specify the API version for the request}
		    {--dto= : Specify the Data Transfer Object (DTO) class associated with the request}
		    {--dtoNamespace= : Specify the namespace for the DTO class}
		    {--force : Force the generation even if the file already exists}
		    {--validation-rules : Specify the validation rules for the request}
		    {--validation-messages : Specify the validation messages for the request}
		    {--policy : Generate a policy for the request}
		    {--timestamp : Add a timestamp to the filename}
		    {--test : Generate a test for the request}
		    {--interactive : Interactively prompt for missing options}

命令选项

  • {name?}:可选。要生成的创建请求类的名称。如果不提供,则命令将交互式提示您输入。
  • --base={base_class}:可选。指定请求的基类。默认情况下,它扩展 FormRequest,但您可以根据需要指定不同的基类。
  • --dir={directory}:可选。指定请求类应存储的目录。默认目录为 app/Http/Requests。
  • --namespace={namespace}:可选。指定请求类的命名空间。默认命名空间为 App\Http\Requests。
  • --model={model_class}:可选。指定与请求关联的模型类。这对于生成针对特定模型定制的请求很有用。
  • --controller={controller_namespace}:可选。为请求生成相应的控制器。默认情况下,它使用 App\Http\Controllers 命名空间。
  • --api-version={version}:可选。指定请求的 API 版本。当与 API 版本一起工作时很有用。
  • --dto={dto_class}:可选。指定与请求关联的数据传输对象 (DTO) 类。允许更紧密地集成请求和 DTO。
  • --dtoNamespace={dto_namespace}:可选。指定 DTO 类的命名空间。
  • --force:可选。即使存在具有相同名称的文件,也会强制生成请求类。
  • --validation-rules:可选。允许您指定请求的验证规则。对于自定义验证逻辑很有用。
  • --validation-messages:可选。允许您指定请求的自定义验证消息。
  • --policy:可选。为请求生成策略,允许您定义授权逻辑。
  • --timestamp:可选。将时间戳添加到生成的请求类的文件名中。
  • --test:可选。为请求生成测试类,便于测试驱动开发。
  • --interactive:可选。启用交互式提示以获取缺少的选项,使请求生成配置更容易。

命令使用

基本使用

要生成创建请求类,可以运行以下命令

php artisan generate:create-request {name}

{name} 替换为您要创建的请求类的名称。

其他选项

除了基本用法外,generate:create-request 命令还提供了一些额外的选项以进行更多自定义

定义请求的目录

--dir 选项允许您定义请求类应存储的目录。这有助于您在特定目录中组织请求类。

php artisan generate:create-request {name} [--dir={directory_path}]
  • {name}:您要生成的创建请求类的名称。
  • --dir:可选。请求类应存储的目录路径。
  • {directory_path}:可选。请求类应存储的目录路径。
  • --dir[={directory_path}]:指定请求类应存储的目录路径。
示例

假设您想要生成一个名为 CreateProductRequest 的创建请求类,并将其存储在 Modules 文件夹内的 Requests 目录中。您可以使用以下命令

php artisan generate:create-request CreateProductRequest --dir=app/Http/Requests/V1/Products

此命令将创建 CreateProductRequest 类并将其放置在指定的目录路径中,帮助您在 Laravel 项目中组织请求类。

请求类的自定义命名空间

要为请求类设置自定义命名空间,您可以使用 --namespace 选项。

php artisan generate:create-request {name} [--namespace={custom_namespace}]
  • {name}:您要生成的创建请求类的名称。
  • --namespace:可选。此选项允许您指定请求的自定义命名空间。
  • {custom_namespace}:可选。您想与请求类关联的自定义命名空间。
  • --namespace[={custom_namespace}]:使用此选项设置请求类的所需命名空间,有助于高效组织。
示例

假设您想创建一个名为 CreatePaymentRequest 的创建请求,并将其放置在 App\Http\Requests\Payments 命名空间中。您可以通过运行以下命令实现

php artisan generate:create-request CreatePaymentRequest --namespace=App\\Http\\Requests\\Payments

此命令将生成具有指定命名空间的 CreatePaymentRequest 类,确保它在 Laravel 应用程序的 App\Http\Requests\Payments 命名空间下组织。

将请求与模型关联

要将创建请求与特定模型关联,您可以使用 --model 选项。当您的创建请求与特定模型的数据结构密切相关时,这很有用。

php artisan generate:create-request {name} [--model={model_name}]
  • {name}:您要生成的创建请求类的名称。
  • --model:可选。使用此选项指定与请求关联的模型名称。
  • {model_name}:可选。与请求关联的模型名称。
  • --model[={model_name}]:设置关联模型的名称。此选项有助于在创建请求与模型之间建立关系。
示例

假设您想创建一个在创建资源时管理产品数据的创建请求,并且它与 Product 模型相关联。您可以使用以下命令

php artisan generate:create-request CreateProductRequest --model=Product

此命令将生成 CreateProductRequest 类,表明它与 Laravel 应用程序中的 Product 模型密切相关。

生成相应的控制器

使用 --controller 选项生成创建请求的相应控制器。这简化了创建与请求协同工作的控制器的过程。

php artisan generate:create-request {name} [--controller={controller_namespace}]
  • {name}:您要生成的创建请求类的名称。
  • --controller:可选。此选项允许您指定相应控制器的命名空间。
  • {controller_namespace}:可选。相应控制器的命名空间。
  • --controller[={controller_namespace}]:为创建请求生成相应控制器,指定控制器的命名空间。
示例

假设您想创建一个名为 CreateCommentRequest 的创建请求,并在 App\Http\Controllers 命名空间中生成相应控制器。您可以使用以下命令

php artisan generate:create-request CreateCommentRequest --controller=App\\Http\\Controllers

此命令将生成 CreateCommentRequest 类和指定命名空间中的相应控制器,简化处理 Laravel 应用程序中与评论相关的请求的过程。

指定API版本

当处理 API 版本时,您可以使用 --api-version 选项指定与请求关联的版本。这有助于根据不同的 API 版本对请求进行分类和管理。

php artisan generate:create-request {name} [--api-version={version}]
  • {name}:您要生成的创建请求类的名称。
  • --api-version:可选。此选项允许您指定请求的所需 API 版本。
  • {version}:可选。您想与请求关联的版本号。
  • --api-version[={version}]:设置请求的API版本。此选项有助于根据不同的API版本组织和管理工作请求。
示例

假设你有一个版本为v2的API,你想要为该版本创建一个名为CreateProductRequest的创建请求。你可以使用以下命令

php artisan generate:create-request CreateProductRequest --api-version=v2

此命令将在你的Laravel项目中生成与API版本v2关联的CreateProductRequest类,允许你管理特定版本的请求。

与数据传输对象(DTO)关联

要将数据传输对象(DTO)类与创建请求关联,你可以使用--dto选项。这在你需要使用DTO验证和处理数据时非常有用。

php artisan generate:create-request {name} [--dto={dto_name}]
  • {name}:您要生成的创建请求类的名称。
  • --dto:可选。使用此选项指定关联的DTO类名称。
  • {dto_name}:可选。关联的DTO类名称。
  • --dto[={dto_name}]:将数据传输对象(DTO)类与创建请求关联。此选项在请求和DTO之间建立连接。
示例

假设你想要创建一个名为CreateOrderRequest的创建请求,并将其与名为CreateOrderDTO的DTO关联。你可以使用以下命令

php artisan generate:create-request CreateOrderRequest --dto=CreateOrderDTO

此命令将生成CreateOrderRequest类,并指出它与CreateOrderDTO类相关联。它允许你使用指定的DTO验证和处理数据。

为DTO类设置自定义命名空间

你可以使用--dtoNamespace选项为DTO类设置自定义命名空间。这为你在一个Laravel项目中组织DTO类提供了灵活性。

php artisan generate:create-request {name} [--dtoNamespace={namespace_value}]
  • {name}:您要生成的创建请求类的名称。
  • --dtoNamespace:可选。此选项允许你指定关联DTO类的自定义命名空间。
  • {namespace_value}:可选。你想要与DTO类关联的自定义命名空间。
  • --dtoNamespace[={namespace_value}]:为DTO类设置自定义命名空间,以实现高效组织。
示例

假设你想要创建一个名为CreateCustomerRequest的创建请求,并将其与位于App\Http\Requests\Customers命名空间中的CreateCustomerDTO类关联。你可以使用以下命令

php artisan generate:create-request CreateCustomerRequest --dto=CreateCustomerDTO --dtoNamespace=App\\Http\\Requests\\Customers

此命令将生成CreateCustomerRequest类,并指定它与组织在自定义命名空间App\Http\Requests\Customers下的CreateCustomerDTO类相关联。

强制生成

如果你想要强制生成请求类,即使存在具有相同名称的文件,也可以使用--force选项。这确保生成过程在没有现有文件干扰的情况下进行。

php artisan generate:create-request {name} [--force]
  • {name}:您要生成的创建请求类的名称。
  • --force:可选。使用此选项强制生成请求类,即使存在相同。
示例

假设你想要创建一个名为CreateReviewRequest的创建请求,并确保即使在名为CreateReviewRequest.php的文件存在的情况下,它也能被生成。你可以使用以下命令

php artisan generate:create-request CreateReviewRequest --force

此命令将生成CreateReviewRequest类,如果使用--force选项,将覆盖任何现有同名文件。

注意: 这些附加选项为你提供了在Laravel应用程序中生成创建请求类时的增强灵活性和定制能力。你可以根据项目特定需求调整请求,确保高效验证和处理传入的数据。

结论

生成控制器

使用generate:controller命令在Laravel中生成控制器类。控制器是处理应用程序中HTTP请求的关键部分。此命令提供了各种选项,用于自定义控制器的生成以满足项目需求。

命令概述

您可以使用以下 Artisan 命令来生成新的请求类

php artisan generate:controller {name} [options]
  • {name?}:你想要生成的控制器类名称。
  • [options]:可选。用于自定义控制器类生成过程的附加选项或标志。

命令签名

php artisan generate:controller
                    {name : The name of the controller class} 
                    {--resource : Generate a resource controller}
                    {--namespace= : The namespace for the controller}
                    {--middleware= : Comma-separated list of middleware}
                    {--only= : Comma-separated list of methods to generate (for resource controller)}
                    {--except= : Comma-separated list of methods to exclude (for resource controller)}
                    {--force : Overwrite existing controller if it exists}
                    {--api : Generate a resourceful controller}
                    {--api-rest : Generate a resourceful controller}
                    {--with-form-requests : Generate FormRequest classes}
                    {--request : Generate request}
                    {--route : Generate route}
                    {--repository : Generate repository}
                    {--repository-namespace= : Path of the repository}
                    {--repository-base-path : Repository is at base path}
                    {--provider= : Generate provider}
                    {--bindings : Generate route model bindings for controller methods that require them, automatically injecting the necessary model instances into your method}
                    {--service : Generate a corresponding service class for the controller, separating business logic from the controller itself}
                    {--requests : Generate request classes (form request validation) associated with the controller methods, enhancing your application's validation and security}

命令选项

  • {name}:您要生成的控制器类的名称。

  • --resource:生成资源控制器。资源控制器用于CRUD操作。

  • --namespace:为控制器类指定自定义命名空间。

  • --middleware:逗号分隔的中间件列表,用于应用控制器路由。

  • --only:逗号分隔的列表,用于创建资源控制器时生成的方法。

  • --except:逗号分隔的列表,用于创建资源控制器时排除的方法。

  • --force:如果控制器已存在,则覆盖它。

  • --api or --api-rest:生成适合构建RESTful API的资源控制器。

  • --with-form-requests:为控制器方法生成关联的FormRequest类,用于请求验证。

  • --request:为控制器生成关联的请求类。

  • --route:为控制器生成关联的路由类。

  • --repository:为控制器生成关联的仓库类。

  • --repository-namespace:指定仓库的路径或命名空间。

  • --repository-base-path:将仓库放在Laravel应用程序的基本路径中。

  • --provider:为控制器生成关联的提供者类。

  • --bindings:为需要它们的控制器方法生成路由模型绑定,自动将必要的模型实例注入到方法中。

  • --service:为控制器生成对应的服务类,将业务逻辑与控制器本身分离。

  • --requests:为控制器方法生成请求类(表单验证),增强应用程序的验证和安全。

命令使用

基本使用

要生成新的控制器,请运行以下命令

php artisan generate:controller {name}
  • {name}:用您期望的 DTO 类的名称替换 {name}。此命令将创建一个具有该名称的新 DTO 文件。
示例

生成名为HomeController的基本控制器类

php artisan generate:controller HomeController

此命令将在您的Laravel项目中生成新的HomeController类,您可以使用它来结构化和管理与用户相关的数据传输。

注意: 此命令会生成具有各种自定义选项的新控制器类。

其他选项

除了基本用法外,generate:create-request 命令还提供了一些额外的选项以进行更多自定义

控制器自定义命名空间

您可以使用--resource选项生成资源控制器。资源控制器用于处理应用程序中资源CRUD操作。

php artisan generate:controller {name} --resource
  • {name}:您要生成的控制器类的名称。
  • --resource:可选。使用此选项生成资源控制器。
示例

要生成用于管理用户资源的UserController资源控制器,可以使用以下命令

php artisan generate:controller UserController --resource

此命令将创建一个具有处理资源CRUD操作所需方法的UserController类。

控制器自定义命名空间

您可以使用--namespace选项为您的控制器设置自定义命名空间。这允许您为控制器类指定自定义命名空间。

php artisan generate:controller {name} --namespace={custom_namespace}
  • {name}:您要生成的控制器类的名称。
  • --namespace:可选。控制器类的自定义命名空间。
  • {custom_namespace}:可选。控制器类的自定义命名空间。
  • --namespace={custom_namespace}:指定控制器类的自定义命名空间。此选项可让您将控制器组织在特定的命名空间中。
示例

要生成名为ProductController的控制器并将其放置在自定义命名空间App\Http\Controllers\Admin中,可以使用以下命令

php artisan generate:controller ProductController --namespace=App\\Http\\Controllers\\Admin

此命令将在您的Laravel项目中创建位于App\Http\Controllers\Admin命名空间中的ProductController类。

指定中间件

您可以使用--middleware选项为控制器指定中间件。中间件为过滤进入您应用程序的HTTP请求提供了一种方便的方法。

php artisan generate:controller {name} --middleware={middleware_list}
  • {name}:您要生成的控制器类的名称。
  • --middleware:可选。逗号分隔的中间件列表,用于应用控制器。
  • {middleware_list}:可选。应用于控制器的中间件逗号分隔列表。
  • --middleware={middleware_list}:指定应用于控制器的中间件。此选项允许您为控制器的路由定义中间件。
示例

要生成名为 ProductController 的控制器并应用 auth 和 admin 中间件,可以使用以下命令

php artisan generate:controller ProductController --middleware=auth,admin

此命令将在其路由.project上应用指定中间件的 ProductController 类。

指定要生成的函数(针对资源控制器)

您可以使用 --parent 选项为您的控制器指定父控制器类。此选项允许您的控制器扩展自定义父控制器类。

php artisan generate:controller {name} --parent={parent_class}
  • {name}:您要生成的控制器类的名称。
  • --parent:可选。要扩展的父控制器类的名称。
  • {parent_class}:可选。要扩展的父控制器类的名称。
  • --parent={parent_class}:指定要扩展的父控制器类。此选项允许您创建继承自自定义父控制器功能的控制器。
示例

假设您想生成一个名为 ProductController 的控制器,该控制器扩展名为 BaseController 的自定义父控制器。您可以使用以下命令

php artisan generate:controller ProductController --parent=BaseController

此命令将在您的 Laravel 项目中创建扩展 BaseController 类的 ProductController 类。

指定要生成的函数(针对资源控制器)

在生成资源控制器时,您可以使用 --only--except 选项指定要生成的函数。这些选项允许您控制应包含或排除的函数。

php artisan generate:controller {name} --only={method_list}
OR
php artisan generate:controller {name} --except={method_list}
  • {name}:您要生成的控制器类的名称。
  • --only=:可选。资源控制器要生成的函数逗号分隔列表。
  • --except=:可选。资源控制器要排除的函数逗号分隔列表。
  • {method_list}:可选。要生成或排除的函数逗号分隔列表。
  • --only={method_list}:指定资源控制器要生成的函数。
  • --except={method_list}:指定资源控制器要排除的函数。
示例

要生成仅包含 indexshow 方法的资源控制器 ProductController,可以使用以下命令

php artisan generate:controller ProductController --resource --only=index,show
OR
php artisan generate:controller ProductController --resource --except=create,update

此命令将创建一个 ProductController 类,仅包含处理资源操作指定的方法(indexshow)。

覆盖现有控制器

您可以使用 --force 选项强制生成控制器类,即使已存在具有相同名称的文件。

php artisan generate:controller {name} --force
  • {name}:您要生成的控制器类的名称。
  • --force:可选。使用此选项强制生成控制器类,覆盖任何现有同名文件。
示例

如果您想创建名为 UserController 的控制器,并且您确定不存在同名文件或您想覆盖现有的一个,可以使用以下命令

php artisan generate:controller UserController --force

此命令将生成 UserController 类,并覆盖您的 Laravel 项目中任何现有同名文件。

生成 API 资源控制器

您可以使用 --api 或 --api-rest 选项生成 API 资源控制器。此类控制器常用于构建 RESTful API。

php artisan generate:controller {name} --api
  • {name}:您要生成的控制器类的名称。
  • --api:可选。使用此选项生成 API 资源控制器。
示例

要生成名为 ApiController 的 API 资源控制器,可以使用以下命令

php artisan generate:controller ApiController --api

此命令将创建一个 ApiController 类,包含构建 RESTful API 所需的方法。

生成 FormRequest 类

您可以使用 --with-form-requests 选项为控制器方法生成关联的 FormRequest 类。FormRequest 类对于验证传入的 HTTP 请求很有用。

php artisan generate:controller {name} --with-form-requests
  • {name}:您要生成的控制器类的名称。
  • --with-form-requests:可选。使用此选项为控制器方法生成 FormRequest 类。
示例

要为名为 ProductController 的控制器生成 FormRequest 类,可以使用以下命令

php artisan generate:controller ProductController --with-form-requests

此命令将在您的Laravel项目中创建与ProductController方法关联的FormRequest类。

指定API版本

在处理API版本时,您可以使用--api-version选项来指定控制器和相关组件的版本。这对于根据不同的API版本对控制器和资源进行分类非常有用。

php artisan generate:controller {name} --api-version={version}
  • {name}:您要生成的控制器类的名称。
  • --api-version:可选。控制器和相关组件的API版本。
  • {version}:可选。控制器和相关组件的版本号。
  • --api-version={version}:使用此选项指定控制器的API版本。这有助于根据不同的API版本对控制器和资源进行分类。
示例

假设您正在处理API版本v2,并且您想为该版本创建一个名为ProductController的API控制器。您可以使用以下命令

php artisan generate:controller ProductController --api-version=v2

此命令将在您的Laravel项目中生成与API版本v2关联的ProductController类。

生成请求类(表单请求验证)

您可以使用--requests选项为控制器方法生成请求类,这增强了您应用程序的验证和安全功能。

php artisan generate:controller {name} --requests
  • {name}:您要生成的控制器类的名称。
  • --requests:可选。使用此选项生成与控制器方法关联的请求类(表单请求验证)。
示例

要为名为ProductController的控制器生成请求类,您可以使用以下命令

php artisan generate:controller ProductController --requests

此命令将在您的Laravel项目中为ProductController的方法创建请求类。

生成仓库类

您可以使用--repository选项为控制器生成仓库类。仓库类对于抽象数据库交互非常有用。

php artisan generate:controller {name} --repository
  • {name}:您要生成的控制器类的名称。
  • --repository:可选。使用此选项为控制器生成仓库类。
示例

要为名为ProductController的控制器生成相关仓库类,您可以使用以下命令

php artisan generate:controller ProductController --repository

此命令将在您的Laravel项目中为ProductController创建相关仓库类。

生成仓库类

您可以使用--repository-namespace选项为仓库类指定命名空间。

php artisan generate:controller {name} --repository [--repository-namespace[={repository_namespace}]]
  • {name}:您要生成的控制器类的名称。
  • --repository:可选。使用此选项为控制器生成仓库类。
  • --repository-namespace:可选。仓库类的命名空间。
  • {repository_namespace}:可选。仓库类的命名空间。
  • --repository-namespace={repository_namespace}:指定与控制器关联的仓库类的命名空间。
示例

要为命名空间为App\Repositories的控制器ProductController生成相关仓库类,您可以使用以下命令

php artisan generate:controller ProductController --repository --repository-namespace=App\\Repositories

此命令将在您的Laravel项目中为指定的App\Repositories命名空间创建仓库类。

仓库基本路径

您可以使用--repository-base-path选项在Laravel项目的根路径处为控制器生成仓库类。

php artisan generate:controller {name} --repository [--repository-base-path[={repository_namespace}]]
  • {name}:您要生成的控制器类的名称。
  • --repository:可选。使用此选项为控制器生成仓库类。
  • --repository-base-path:可选。使用此选项在Laravel项目的根路径处生成仓库类。
示例

要为命名空间为App\Repositories的控制器ProductController生成相关仓库类,您可以使用以下命令

php artisan generate:controller ProductController --repository --repository-base-path

此命令将在Laravel项目的根路径处创建仓库类。

生成路由模型绑定

您可以使用--bindings选项为需要它们的控制器方法生成路由模型绑定,自动将必要的模型实例注入到您的方

php artisan generate:controller {name} --bindings
  • {name}:您要生成的控制器类的名称。
  • --bindings:可选。使用此选项为控制器方法生成路由模型绑定。
示例

要为名为ProductController的控制器生成特定方法的路由模型绑定,您可以使用以下命令

php artisan generate:controller ProductController --bindings

此命令将在您的Laravel项目中为ProductController的方法生成路由模型绑定。

注意: 这些选项在生成Laravel应用程序中的控制器类时为您提供灵活性和自定义选项。您可以根据项目

生成相应的服务类

您可以使用 --service 选项为您的控制器生成相应的服务类。服务类有助于将业务逻辑与控制器本身分离。

php artisan generate:controller {name} --service
  • {name}:您要生成的控制器类的名称。
  • --service:可选。使用此选项为控制器生成相应的服务类。
示例

要生成名为 ProductController 的控制器及其对应的服务类,可以使用以下命令

php artisan generate:controller ProductController --service

此命令将在您的 Laravel 项目中创建一个 ProductController 类及其对应的服务类。

注意: 这些选项在生成Laravel应用程序中的控制器类时为您提供灵活性和自定义选项。您可以根据项目

结论

测试

composer test

特性

可以在 此处 找到 Larastan 的特性列表。

常见问题解答

在此处解答常见问题。

故障排除

在此处解答常见问题。

忽略的错误

目前 Laravel 的某些部分对 Larastan/PHPStan 来说过于神秘,我们列出了常见的 错误忽略列表,根据需要添加。

安全漏洞

请查阅 我们的安全策略,了解如何报告安全漏洞。

行为准则

为了确保社区对所有成员都友好,请查阅并遵守 行为准则

变更日志

请参阅 变更日志 了解最近的变化。

👊🏻 贡献

感谢您考虑为 Larastan 做贡献。所有贡献指南均可在 此处 查找。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。