gpt4 book ai didi

php - 在 Laravel/PHP/MySQL 中保存和显示带有子页面的页面所需的数据库逻辑建议

转载 作者:行者123 更新时间:2023-11-29 12:40:28 25 4
gpt4 key购买 nike

这是我(在 Laravel 中)构建的第一个应用程序,它不是教程中的“待办事项”列表,我正在寻找实现某些数据库逻辑的最佳方法。

我正在构建一个应用程序,用户可以在其中创建页面和子页面。但是,页面模板有不同类型,例如:

  • 音频:(用于嵌入 Soundcloud)
  • 视频:(用于嵌入 YouTube)

每个模板都可以使用自定义名称和别名多次使用,这意味着您可以拥有多个带有“轨道”或“混音”等标题的音频模板。

前端 URL 结构如下:

website.com/username/mixes/- 显示混音列表

website.com/username/mixes/name-of-mix - 直接转到每个组合

在管理区域中,用户将遵循以下路径

  1. 添加新页面(简单链接)

  2. 选择模板(例如音频或视频)

  3. 选择音频模板并将其命名为 Mixes(前端website.com/username/mixes)

  4. 返回到新创建的(但空的)混合页面

  5. 用户点击“添加新音频项目”

  6. 创建一个名为“混音名称”的新音频项目

  7. 这会强制 slug 的前一个第一部分为/mixes/并且然后在末尾添加“name-of-mix”。

  8. 用户可以在“混合”页面重复此操作多次。

以上所有内容我都可以实现(在 Laravel 的 Controller 内)。

我遇到的问题是在数据库中实现此功能的最佳/最干净的方法是什么?

我是不是...

选项一 - - - - - - - - - - - - - - - - - - - -

保存页面模型中的每个页面和子页面并从中引用模板(如果是子页面),例如:

登陆页面(website.com/username/mixes)

新页面:

- id: 1
- user_id: 1
- format: audio
- format_id: null
- template: audio_landing
- title: Mixes
- slug: mixes

单页(website.com/username/mixes/name-of-mix)

保存后,它将创建一个页面并创建一个单独的音频项目

新音频:

- id: 6
- user_id: 1
- title: Name of mix
- embed_code: 7654365

新页面:

- id: 2
- user_id: 1
- format: audio
- format_id: 6
- template: audio_single
- title: null (title is on the audio model)
- slug: mixes/name-of-mix

然后在我看来,我会调用 website.com/{username}/{slug}

查询只会扫描用户模型(针对用户名),然后扫描页面模型,在找到正确的 slug 时停止,然后引用关联的音频模型并为该页面创建 View 。 (我认为)这将是一种更快且不那么密集(在 MySQL 上)的获取页面信息的方式。

我的想法是否正确,从Pages模型中,我可以使用“format:audio”来搜索Audio模型并使用“format_id:6”来匹配将其添加到模型“id: 6

选项二 - - - - - - - - - - - - - - - - - - - -

在 Pages 中保存页面,然后在音频模型中保存子页面

登陆页面(website.com/username/mixes)

新页面:

- id: 1
- user_id: 1
- template: audio_landing
- title: Mixes
- slug: mixes

单页(website.com/username/mixes/name-of-mix)

这将直接保存在音频模型中

新音频:

- id: 6
- user_id: 1
- template: audio_single
- title: Name of mix
- embed_code: 7654365
- slug: mixes/name-of-mix

然后在我看来,我会调用 website.com/{username}/{slug}

缺点(我认为)是查询必须搜索页面、音频、视频、演出、博客、事件等模型才能找到正确的段。我认为,每次加载页面请求时,这都会对数据库造成很大的负担?

抱歉,跑了一点,非常欢迎任何建议。

jack 。

最佳答案

您是否考虑过为 slugs 设置一个表,从而为您的应用程序的路由逻辑提供一个单一位置来确定它必须显示的内容?

当然,slugs 表需要一个“类型”字段来标识它指向的事物的类型。

关于php - 在 Laravel/PHP/MySQL 中保存和显示带有子页面的页面所需的数据库逻辑建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com