【问题标题】:Update multiple checbox Laravel更新多个复选框 Laravel
【发布时间】:2017-11-07 17:57:43
【问题描述】:

我有一个表关联

ID_USER_CAR | USER_ID | CAR_ID | DELETED_AT

1               2         3        
2               2         5
3               2         10

问题在于更新...因为下次我编辑时...用户 2 将只需要汽车 3 和列表中的另一辆汽车...例如汽车 7。

 @foreach($cars as $car)
     <label style="display:block" class="custom-control custom-checkbox">
      <input @if(in_array($car->car_id, $userCars)) checked @endif type="checkbox" name="cars[]" value="{{ $car->id_car }}" class="custom-control-input"><span class="custom-control-indicator"></span><span class="custom-control-description">{{ $car->name }}</span>
     </label>
  @endforeach

所以更新后..表格看起来像这样

 ID_USER_CAR | USER_ID | CAR_ID | DELETED_AT

    1               2         3        
    2               2         5    2017-10-15
    3               2         10   2017-10-15
    4               2         7

【问题讨论】:

  • 氏族你解释清楚发生了什么?
  • 我不知道如何制作更新部分..因为在编辑时我可以更改复选框..我不知道要删除什么..要更新什么..然后插入。 . 如果复选框值是其他 @Troyer

标签: php laravel checkbox


【解决方案1】:

你可以在 laravel 中使用 Eloquent Relationships 解决这个问题:

假设你的表名是car_user

创建 2 个模型:汽车和用户:
在 Car 模型中添加 users() 关系:

    public function users(){
        return $this->belongsToMany( User::class, 'car_user', 'car_id', 'user_id' );
    }  

在用户模型中:

    public function cars(){
        return $this->belongsToMany( Car::class, 'car_user', 'user_id', 'car_id' );
    }  

现在您可以在刀片中执行此操作:

@foreach($cars as $car)
     <label style="display:block" class="custom-control custom-checkbox">
      <input {{ $car->users->find($user->user_id) ? 'checked' : '' }} type="checkbox" name="cars[]" value="{{ $car->id_car }}" class="custom-control-input"><span class="custom-control-indicator"></span><span class="custom-control-description">{{ $car->name }}</span>
     </label>
  @endforeach

现在更新:
在多对多关系更新中,您必须先分离所有行,然后附加新行(选中的行):
controller

public function update(Request $request)
{
    $user->cars()->detach();
    foreach ($request->cars as $car)
        $user->cars()->attach($car);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2022-01-25
    • 2017-04-23
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多