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

Laravel 5.2基于多对多关系查找模型

汤英豪
2023-03-14

我在为我的项目中的搜索函数编写雄辩的查询时遇到了问题。以下是我的数据库表/模型:

artist
| id | name         |
---------------------
| 1  | Van Gogh     |
| 2  | Michelangelo |

art
| id | title        |
---------------------
| 1  | David        |
| 2  | Starry Night |

art_artist
| id | art_id | artist_id |
---------------------------
| 1  | 1      | 2         |
| 2  | 2      | 1         |

style
| id | title        |
---------------------
| 1  | Sculpture    |
| 2  | Painting     |

art_style
| id | art_id | style_id |
--------------------------
| 1  | 1      | 1        |
| 2  | 2      | 2        |

一个艺术家有许多艺术作品,一个艺术作品有许多风格,也有许多艺术家。我已经验证了这些关系是否正常工作。我也有一个简单的形式,返回id作为一个GET请求与变量艺术家样式

因此,我想在函数中做两件事:首先,检查请求中的变量是否已设置(我已经可以这样做了)。然后,使用ELOQUENT根据表单的结果查询art模型。

这里有一个例子:用户搜索米开朗基罗的雕塑。该函数查询艺术数据库中米开朗基罗雕塑的任何作品,并将其作为艺术模型返回。

问题是,我完全不知道如何根据相关模型的id查询数据库。有什么想法吗?

共有1个答案

柳均
2023-03-14

我终于想出了如何进行查询。首先,我必须告诉Elount我想检索艺术家模型以及艺术,然后我可以使用where has

$art = Art::with('artists')->whereHas('artists',function( $query ){
    $query->where('artists.id',1);
})->get();
 类似资料:
  • 问题内容: 我已经阅读了许多有关级联和多对多关联的主题,但是我无法找到我的特定问题的答案。 我在UserProfiles和Roles之间有多对多关系。当我删除UserProfile时,我希望数据库删除联接表(userprofile2role)中的关联记录,因此要使用实际的SQL’ON DELETE CASCADE’操作。这可能吗?无论我尝试什么,Hibernate总是在不指定ON DELETE行为

  • 问题内容: 伙计们,我正在努力为我的公司制作一个简单的票证生成系统,以吸引人。目前,我的MSSQL数据库中有一个名为的表,另一个名为的表。 我的应用程序是C#Windows窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的comboBox,由填充。生成票证后,以这种形式输入的所有信息都将与from一起存储。 效果很好,但是后来我的客户要求我添加选项,以便可以在一张票上分配3名工程

  • 实现了一对多的关系,它运行良好。 我的问题是当我运行下面的查询时,如果表有100个员工行,每个员工有两个部门。数据库查询被调用了101次,因为对每个员工都是调用部门查询,要完成调用全部100行需要很长时间,有没有人可以提出替代的解决方案? 输出XML:

  • 问题内容: 我目前正在使用ActiveAndroid,并且在过去的几个小时里一直在尝试建立多对多关系,但是我还是无法正常工作。我希望你能帮助我: 我有“学生”和“课程”的模型,一个学生可以有很多课程,而一个课程有很多学生。基本上,这就是我在“ StudentCourse”模型中所拥有的: 现在,我要做的是使用以下代码获取“课程X中的所有学生”: 但是我收到以下错误: java.lang.Class

  • 在本章中,让我们了解和学习多对多的关系。要表示多对多关系,必须创建第三个表(通常称为联接表),将多对多关系分解为两个一对多关系。 为此,我们还需要添加一个联接表。 下面先添加一个表。表的定义如下所示 - 现在创建一个多对多的关系。假设有多个作者在多个项目上工作,反之亦然。 如您所知,我们在中有一个字段,所以为它创建了一个表。但现在不再需要这个字段了。 选择字段,然后按下删除 按钮,将看到以下消息。

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?