gpt4 book ai didi

php - 使用 Laravel 通过与枢轴链接的表搜索数据库

转载 作者:行者123 更新时间:2023-11-29 20:55:21 25 4
gpt4 key购买 nike

我正在尝试在数据库中搜索具有特定属性标签的所有media元素。该查询非常复杂,因为它目前执行以下操作:

  • Media 表中搜索 Hash(如果它与 MD5 哈希的正则表达式匹配)。
  • 搜索链接到媒体属性,称为名称描述,使用 WHERE LIKE,并对搜索查询中的每个单词执行 OR LIKE,使用正则表达式 /\s+ 进行拆分/
  • 搜索标签,使用LIKE检查Description中的完整搜索字符串,然后检查NameSlug 使用完整的搜索字符串和单个单词。

目前,我正在使用一大段 PHP,它将整个查询组合在一起,然后使用 DB::raw,但实际上并不能正常工作。我没有包含它,因为我觉得它不相关,因为我没有正确使用它,但如果需要的话我会包含它。

使用 Laravel Eloquent 或 Fluent 真的可以实现这一点吗?我在这里咬的东西是否超出了我实际咀嚼的范围?

这种程度的搜索真的有必要吗?有没有更好的方法来查找具有特定标题、描述、来源和标签的项目?

谢谢。

<小时/>

我的媒体表:

  • 身份证
  • 哈希

我的属性表:

  • 身份证
  • 姓名
  • 值(value)
  • 媒体_ID

我的标签表:

  • 身份证
  • 姓名
  • 蛞蝓
  • 描述

我的Tag_Media表:

  • 媒体_ID
  • Tag_ID

最佳答案

通过查询,您将连接四个表,而连接是最慢的 SQL 操作,如果可以的话,您可能希望将所有这些表合并到一个更大的表中,并且所有列都已就位。重复条目会浪费内存,但通常这可以提高查询性能。

具有 2 个表的数据库架构的可能替代方案(无重复):

我的媒体表:

  • 身份证
  • 哈希
  • 姓名
  • 描述
  • 来源

我的标签表:

  • 身份证
  • 姓名
  • 蛞蝓
  • 描述
  • 媒体_ID

具有 1 个表的数据库架构的可能替代方案(对于每个媒体,您需要具有相同媒体值和不同标签值的重复条目):

我的媒体表:

  • 身份证
  • 哈希
  • 姓名
  • 描述
  • 来源
  • 标签名称
  • Tag_Slug
  • Tag_Description

还可以尝试对需要搜索的列建立索引。对于这种情况来说,它可能太重了,但非关系数据库可能会给您带来更好的性能。

关于php - 使用 Laravel 通过与枢轴链接的表搜索数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684292/

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