当前位置: 首页 > 知识库问答 >
问题:

构造Laravel控制器

高增
2023-03-14

我有

users
    id
    username

companies
    id

areas
    id

area_company
    id
    area_id      
    company_id

area_company_user
    id
    area_company_id      
    user_id

company_user
    id
    company_id
    user_id

area_user
    id
    area_id
    user_id

在哪里

  • 一个用户有0到多个区域,一个区域可以有0到多个用户

此外,我正在以以下方式构建路线

  1. /用户-所有现有用户
  2. /区域-所有现有区域
  3. /公司-所有现有公司
  4. /区域/{区域}/公司-特定区域中的所有现有公司
  5. /用户/{user}/公司-来自特定用户的所有现有公司
  6. 公司所在的所有现有区域
  7. /区域/{区域}/公司/{公司}/用户-存在于特定区域的公司的所有现有用户

对于1。,2。和3。我在创造遵循下一个模式的控制器

  • AreaControllerwith方法index()、create()、store()、show()、edit()、update()和destroy()
GET /areas, index() method,
GET /areas/create, create() method,
POST /areas, store() method,
GET /areas/{area}, show() method,
GET /areas/{area}/edit, edit() method,
PUT/PATCH /areas/{area}, update() method,
DELETE /areas/{area}, destroy() method.

路线表上只剩下两个案子了

  • 案例1:4。,五,六
  • 案例2:7

我的问题是,既然我想在每个案例中执行各种操作,我应该为每个案例创建新的控制器吗?如果是,那就意味着分别

  • Case 1:areaCompanyControllerUserCompanyControllerCompanyareaController
  • Case 2:areaCompanyUserController

注意:这是一个有用的答案,但并没有完全解决我的问题。

共有2个答案

仲孙德惠
2023-03-14

为了简化项目的调试和维护过程,最好为每种情况定义控制器,以防出现问题,调试和解决问题很容易

AreaController , UserController , CompanyController
子车宏浚
2023-03-14

你可以看到文档中已经有了一种叫做嵌套资源的东西,它可以覆盖你的案例4,5,6。在文档中有PhotoCommentController,您已经描述了您正在使用它(问题案例1)。对于问题案例2,您可以例如为透视表制作模型,并将其用于路由和控制器。例如areaCompanyUserController如果我理解的好,你有这里的area_company透视表与用户的关联。如此多的用户可以是同一个area_company关联的一部分。您可以绕过区域和公司模型,使用区域公司模型,这将是枢轴模型。了解透视模型的id,您可以轻松地获得关联区域、公司和用户。

class AreaCompany extends Pivot
{
    /** code here */
}

这样,您就可以将资源路由命名为/area companys/area companys/{$areaCompany}/users,以避免三重嵌套。我认为这些决定中的任何一个都有自己的后果,比如控制器的子目录规划、表单请求文件、提供者,有时甚至路由文件。可能听说读过上千遍,但重要的是要坚持一贯的方式。考虑一下在一些潜在的升级中可能会出现更少的技术债务。

 类似资料:
  • 本文向大家介绍Laravel 控制结构,包括了Laravel 控制结构的使用技巧和注意事项,需要的朋友参考一下 示例 Blade为常见的PHP控制结构提供了方便的语法。 每个控制结构@[structure]均以开头和结尾@[endstructure]。注意,在标记中,我们只是键入普通的HTML,并使用Blade语法包括变量。 有条件的 '如果'陈述 除非声明 (“如果不是”的简短语法。) 循环 “

  • 所以我有一个Laravel控制器: 目前,我正在使用artisan(在引擎盖下运行PHP的内置开发Web服务器)运行应用程序: 我想将控制台消息记录到artisan进程的管道中。

  • 编辑:我才明白问题到底出在哪里。我需要构造函数从超类获取信息。因此,我需要像这样扩展类中的超类: 如果取消对extends favoriten部分的注释,它将加载构造函数和initialize方法。

  • 我正在构建一个Javafx gui应用程序,我正面临这个问题。我的程序有多个场景,所以我有不同的FXML文件和控制器类。问题是,在第一个“主菜单”(这是我的应用程序中弹出的第一个)场景中,在控制器的构造函数中,我调用了一些从数据库加载数据的重型方法等等。所以会发生什么。在接下来的场景中我确实有“主菜单按钮”,即切换到主菜单场景!所以每次我回到“主菜单”场景时,构造函数都会调用大量加载数据的方法。但

  • 流程控制语句对于程序设计来说特别重要,它可以用于设定程序的逻辑结构。一般需要与条件判断语句结合使用。Lua 语言提供的控制结构有 if,while,repeat,for,并提供 break 关键字来满足更丰富的需求。本章主要介绍 Lua 语言的控制结构的使用。

  • Control structures 控制结构 The control structures of Go are related to those of C but differ in important ways. There is no do or while loop, only a slightly generalized for; switch is more flexible; if