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

Laravel透视表-保存来自其他列的数据

斜宁
2023-03-14

我正在尝试保存数据透视表中多列的数据。但是,数据没有保存。下面是我正在做的事情:

Schema::create('benefit_user', function (Blueprint $table) {
    $table->integer('benefit_id');
    $table->integer('user_id');
    $table->integer('amount1')->default(0);
    $table->integer('amount2')->default(0);
    $table->timestamps();
});

刀片

@foreach($benefits as $benefit)
 <tr>
     <td>
        <input class="form-check-input" type="checkbox" value="{{ $benefit->id }}" name="benefitId[]" id="flexCheckChecked"
        @foreach($user->benefits as $benefitId)
            {{ $benefitId->id === $benefit->id ? 'checked' : '' }}
         @endforeach
         >
      </td>
      <td>
          {{ $benefit->name }}
       </td>
       <td>
           <input type="text" class="form-control" name="amount1[]"
                @foreach($user->benefits as $e_pay)
                    value="{{ $benefitId->id === $benefit->id ? $benefitId->amount1 : '' }}"
                @endforeach
            >
        </td>
        <td>
            <input type="text" class="form-control" name="amount2[]"
                @foreach($user->benefits as $er_pay)
                     value="{{ $benefitId->id === $benefit->id ? $benefitId->amount2 : '' }}"
                @endforeach
            >
        </td>
     </tr>
@endforeach

如果我只使用checkbox来同步benefit_id和user_id,它就能工作。但如果添加额外的数据amount1和amount2,则不起作用。

控制器

$user->benefits()->sync([$request->benefitId => ['amount1' => $request->amount1, 'amount2' => $request->amount2]]);

事先谢谢你的帮助。

共有1个答案

周滨海
2023-03-14

在将数据插入到povit表(如belwo)时,必须使用attach not sync

$user->benefits()->attach([$request->benefitId => ['amount1' => $request->amount1, 'amount2' => $request->amount2]]);
 类似资料:
  • 我有2张桌子。一个有用户,一个有位置。我创建了一个名为user_locations的数据透视表。一个用户可以有一个或多个位置。一个位置可以属于一个或多个用户。所以我在这些桌子上有多对多的关系。我已经从laravel上读到过附加方法,但我不太确定如何使用它。 在“我的用户和位置”表中,我有一个id,该id在“用户id”和“位置id”下进入我的透视表。 目前我遇到了两个问题。In Location::

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 请原谅我的新问题,这个问题主要是因为我顽固地缺乏对拉雷维尔多对多关系的理解。 在我的网站上,用户可以上传图片 伴随着用户自己创建的标签。这些标记存储为一个数组,经过验证,然后检查标记是否存在。如果标签存在,我希望在“tagmap”上有一个条目,将新图像与该标签相关联。如果它不存在,我希望同样的事情发生,但也有一个新的标签被创建。 我有3个表,一个图像表、一个标签表和一个名为“tagmap”的透视表

  • 问题内容: 我将重点放在关键值对上,以便与另一台服务器上的值进行比较以进行一致性测试。我遇到了一个返回错误的问题。 Msg 8167,第16级,状态1,第51行 列“类型”的类型与UNPIVOT列表中指定的其他列的类型冲突。 询问: 为什么这样不喜欢,,??? 我也尝试过 问题答案: 这实际上是整理问题。我可以通过更改以下行来解决: 特定的问题是整理为,而您提到的其他3列则整理为(至少,在我的机器

  • 问题内容: 我有一个phone_models,phone_problems和一个phone_model_phone_problem数据透视表。数据透视表有一个额外的“价格”列。 手机型号: 电话问题: 我想做的是获取具有特定问题的特定手机的价格。 这就是我现在的方式,但是我觉得Laravel具有内置的Eloquent功能,我找不到用更简单的方式做到这一点: 这一切都是从他们的中选择特定的模型和问题

  • 我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re