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

在Laravel中获取模型的关联,以简化创建/更新

杜烨伟
2023-03-14

我有一个电影模特,有以下联想(属于电影类型):
演员
国家
类型。。。

当一个表单被张贴时,我有这个数据(这里跳过了很多细节):
'演员'=

我希望我的update()/store()控制器函数能够轻松关联这些模型。

名为“卡里·格兰特”的演员可能存在,也可能不存在,也可能与我正在编辑的电影有关联。我还可以把他从这部电影中删除,所以我需要删除关联。体裁和其他一切都一样。

所以我想我应该做一个基本模型,在那里只做一次,就像这样:
1。获取电影模型定义的关联
2。检查POST数据是否包含这些关联
3。对于它们中的每一个,检查它们是否存在(如果不创建它们),并返回一个ID数组。我正在检查的列是“name”,但它可以配置
4。同步()这些ID。

现在,我不需要在电影表单的相关模型中添加更多内容(例如演员的生日)。

我被困在了n.1($1)-

共有2个答案

龚浩宕
2023-03-14

我遇到了同样的问题,这就是我在项目中所做的:

>

  • 我没有检索所有已定义的模型关系,而是列出了可以通过添加静态成员来更新的关系

    Movie::$editableRelations=['演员','流派','国家']

    循环浏览post数据,并与$editableRelations数组匹配。如果某个关系的数据存在,请遵循以下步骤,否则我们将不接触该关系。

    步骤3和步骤4与您的相同。

  • 红砚文
    2023-03-14

    使用直接关系:$模-

    http://laravel.com/docs/4.2/eloquent#relationships

    所有sync()的工作都将由ORM完成,因此您应该做的最复杂的事情是n.3。必须在$model之间创建差异-

     类似资料:
    • 前言 在前两篇文章中,向大家介绍了定义关联关系的源码,还有基于关联关系的关联模型加载与查询的源码分析,本文开始介绍第三部分,如何利用关联关系来更新插入关联模型。 hasOne/hasMany/MorphOne/MorphMany 更新与插入 save 方法 正向的一对一、一对多关联保存方法用于对子模型设置外键值: public function save(Model $model) { $

    • 问题内容: 为什么在我的某些模型中序列化不会为 Foreignkey 创建新列?但是它确实为其他模型创建了??? 令人沮丧和奇怪。例如,在此用户模型中,不会创建sequelize 。 这是一个类似的问题:不会创建模型关联列但不能创建!没有回答。 我已经花了几个小时,我做了所有类似的事情: 仔细阅读以下内容:https : //sequelize.org/master/manual/assocs.h

    • 嗨,我是新来的拉威尔,在理解如何建立人际关系方面有点挣扎。我试图在laravel中创建一个基本的restful api,有3个模型 表迁移: 书籍是主要的表格,作者与书籍有一对多的关系。类别与书籍有多对多的关系,因为一本书可以在多个类别中。 books表有一个author_id字段将其链接到author表。还有一个名为category_books的透视表,它包含category_id和book_i

    • 问题内容: 使用内联formset docs中的示例,我能够(使用modelforms)编辑属于特定模型的对象。我一直在尝试使用相同的模式来 使用内联表单集创建新对象,但是一直无法清除我的头来为此目的提供工作视图。 使用与上述链接相同的示例,我将如何创建“作者”模型的新实例及其相关的“书”对象? 问题答案: 首先,创建一个Author模型表单。 然后创建一个虚拟作者对象: 然后使用伪作者创建内联表

    • 问题内容: 是否可以一次更新父模型和关联模型的属性?我无法使其正常工作,并且无法找到任何完整的示例。我不确定我的代码是否有问题或是否没有按照我期望的方式工作。我尝试将onUpdate:’cascade’添加到我的hasMany定义中,但这似乎无济于事。 楷模: 检索过滤器并尝试更新关联的FilteredContent对象上的属性: 这导致仅Filter对象中的属性被更新。如何获取它还更新Filte

    • 通过预先确定好模型之间的关系,在业务开发中,使用非常简便的写法,就可以实现复杂的涉及多表数据增删改查。 这一切都是模型底层实现帮你在处理,在 imi 中,模型的关联关系都使用注解来定义。 注解 这里列出定义模型关联关系所需的注解,所有关联模型的注解,命名空间为Imi\Model\Annotation\Relation @OneToOne 一对一关系声明 用法: @OneToOne("模型类名")