Laravel:当我的外键在数组中时,如何在模型中添加关系?

Posted

技术标签:

【中文标题】Laravel:当我的外键在数组中时,如何在模型中添加关系?【英文标题】:Laravel: How to add Relationship in Model when my Foreign keys are in array? 【发布时间】:2019-02-26 12:34:09 【问题描述】:

我有一个表,我需要将 id 保存在数组中,您可以在其中查看项目 events_who 是一个外键。我可以在模型中创建关系以从外键获取数据的任何解决方案?我试过belongsToMany,但它不起作用。 :(

有什么建议吗?

【问题讨论】:

Laravel. How to get relationships where foreign key is an array的可能重复 这是重复的。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用一个变体搜索您的标题和关键字作为您的标签。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。在这里你可以用谷歌搜索你的标题。而“它不起作用”什么也没告诉我们。 请use text, not images/links, for text (including code, tables & ERDs)。使用图片只是为了方便补充文本和/或无法在文本中给出的内容。 【参考方案1】:

假设我们有 2 个模型:EventPerson 而一个Person可以参与多个Event

基于上述关系,您需要创建一个名为event_person 的数据透视表,并在两个模型中定义两个belongsToMany() 关系:

Person 模型中,关系将如下所示:

public function events()

    return $this->belongsToMany(Event::class, 'event_person');

【讨论】:

【参考方案2】:

Laravel / mysql(关系数据库)实际上并不是这样工作的。在这种情况下,您应该查看Many to Many Relationships。

示例表架构/布局:

users
|id|name|password|

events
|id|title|body|

event_user (pivot table)
|event_id|user_id|

通常列中不会有数组,您应该使用表来代替。此外,通常外键是表名(单数)后跟_id。

【讨论】:

以上是关于Laravel:当我的外键在数组中时,如何在模型中添加关系?的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何根据Java Servlet中的外键在一列中显示多个值?

ThinkPHP5中模型的一对一关联关系

如何将 Django 模型对象转换为字典并且仍然拥有它们的外键? [复制]

如何通过laravel中的外键检索记录的完整数据?

如何修复laravel迁移中的外键错误

Laravel Eloquent 关系与多个带有“OR”的外键