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

Laravel更新多个具有多个/属于多个关系

郗亦
2023-03-14

我继承了一个项目,它有一些CRUD形式...在创建表单中,我们需要创建一个has很多属性的关系的条目。所以基本上我得到的是以下这些

$movie = Movie::create($request->validated());

// Then to save the belongsToMany
foreach ($request['actors'] as $actor) {
  // do some data manipulation

  $actor = Actor::where('code', $actor->code)->first();

  $movie->actors()->attach($actor);
}

// Save the hasMany 
foreach ($request['comments'] as $comment) {
  // do some data manipulation

  $movie->comments()->create([
    'title' => $comment['title'],
    'body' => $comment['body'],
  ]);
}

我不确定这是否是最好的方法,但似乎有效。

我遇到的问题是,在编辑表单中,这些参与者/评论可以编辑、添加或删除,我不确定如何更新它们。是否可以更新它们,或者删除现有关系数据并重新添加它们是否更好?

我从来没有更新过关系,只是添加了它们,所以我不确定如何开始。

任何帮助都将不胜感激。

共有1个答案

禄光霁
2023-03-14

正如laravel doc所建议的,您可以使用saveMany()方法来存储关系实例。

// Save the hasMany 
foreach ($request['comments'] as $comment) {
  
  $comments[] = [
    new Comment([
      'title' => $comment['title'],
      'body' => $comment['body'],
    ]);  
  ];
}

!empty($comments) && $movie->comments()->saveMany($comments);

对于删除和更新,您应该定义两个路由,一个用于更新注释,一个用于删除注释。

Route::patch('movie/{movie}/comment/{comment}',[MovieController::class,'updateComment']);
Route::delete('movie/{movie}/comment/{comment}',[MovieController::class,'deleteComment']);
 类似资料:
  • 我目前正在用Laravel构建我的第一个应用程序,我偶然发现了一个问题,即我不知道如何设置模型(用户和组)之间的多对多关系。 我已经创建了一个板,其中存储了所有用户和他们所在的组之间的关系。我的问题是,我不知道如何访问和设置这在Laravel。我不确定我是否必须用户has很多或属性。 我正试图找到一种方法,将用户添加到组中,以便在UserGroups表中创建一个新条目。 我的桌子: 用户 ID 集

  • 我是新来laravel的,所以原谅我可能的愚蠢问题。此外,我确实研究了所有其他“类似”的问题,但要么它们没有重现正确的解决方案,要么我真的很难理解。 情景: 我有一个帖子模型和一个主题模型。这就是他们现在的样子。 在岗位上。php 在主题上。php 现在,我需要实现的是: 如果将查询参数传递给请求(即q=Food),我只想返回在主题关系中包含主题食物的帖子,而不返回其他帖子。如果什么都没有通过,那

  • 我需要支持一个涉及以下实体的场景(使用JPA): 用户 一个用户可以有多个帐户,一个帐户可以在多个用户之间共享,这是迄今为止的标准@ManyToMany关系。 一个用户可以为每个帐户拥有一组不同的角色,一个角色可以在多个用户之间共享。 我遵循了这个实践,它解释了一种用额外列映射多对多关联的方法,但我不确定我是否得到了它。 用户实体: 账户实体: 用户帐户实体: 用户帐号: 我正在创建一个新用户并尝

  • 他是两个家伙。我需要你的帮助。 我对laravel/Elount/relation中的逻辑和最佳实践有三个问题。 第一种情况 我有四个模型/桌子。 逻辑问题: 我的想法是给数据透视表两个附加的列(与数据透视('user_id','comment_id')) *)第一个问题:我怎样才能实现这个构想? 第二种情况第二个问题与第一个问题相同,但在这些情况下,我如何访问“评论”,而不是使用hasone/b

  • 我想在laravel中创建一个RBAC系统,其中一个用户可以属于多个角色,每个角色可以有多个权限。中间件应在继续请求之前检查用户是否具有特定权限(在其任何角色内)。 我能够实施一个案例,其中 用户属于一个具有多个权限的角色 我需要实现具有多个权限的多个角色的用户。有什么指点吗?

  • 我试图使用Laravel构建一个(稍微复杂的)订阅服务。 订阅类型为:20份早餐的早餐订阅,在注册后30天内使用。 例如,如果用户在4月1日注册早餐订阅,他可以选择任何20天,直到4月30日。 我制作了以下表格和相应的模型: 用户模型和表 订阅表和型号 订阅用户透视(?)带有软删除的表 我已经用belongsToMany关系更新了相应的模型 用户: 订阅模式 我需要帮助解决的问题1。数据库/模型结