![](/img/trans.png)
[英]Laravel 8: Call to undefined method Illuminate\Database\Eloquent\Relations\HasMany::sync()
[英]Database sync with Eloquent laravel
我正在嘗試保存某些復選框的輸入。
我有一個表users_cities為:
id_user | id_city
--------+---------
1 | 1
1 | 2
2 | 1
我有一個視圖,其中包含三個復選框。
在這種情況下,對於id_user = 1
,city1 city2 city3將帶動city1和city2的檢查。
我要嘗試做的是,如果用戶選擇框3並取消選中框2或僅選擇框3,那么Eloquent將會識別數據並將其與數據庫同步。
public function update($id)
{
$city[] = \App\City::find($id);
$input = Request::all();
//Tried: $city->sync($input)
//Also tried: $city->delete(); $city->save($input);
return redirect()->back();
}
我有id_user
在$city
變量和城市$input
,但我不能得到這個工作。
視圖:
@extends('welcome')
@section('content')
<h1>Atualizar cidades</h1>
@foreach ($city as $citySelect)
<?php $number[] = $citySelect->id_city; ?>
@endforeach
{!! Form::model($city, ['route' => ['cities.update', $citySelect->id_user]]) !!}
@foreach ($cidades as $cidadesnome)
{!! Form::checkbox($cidadesnome->id, $cidadesnome->name, (in_array($cidadesnome->id, $number)), ['class' => 'field']) !!}{!! $cidadesnome->name !!}
@endforeach
<button class="btn btn-success" type="submit">
Atualizar Cidades
</button>
{!! Form::close() !!}
@stop
關系:
public function cities() {
return $this->belongsToMany('City', 'users_cities', 'id_city', 'id_user');
}
public function users() {
return $this->belongsToMany('Users', 'users_cities', 'id_user', 'id_city');
}
我有
id_user
在$city
變量和城市$input
,但我不能得到這個工作。
因為使用$city[] = \\App\\City::find($id);
這是不可能的$city[] = \\App\\City::find($id);
因此$city
不是id_user
而是一個包含一個App\\City
實例的數組。
要同步ID為$id
的用戶所在城市,您需要執行以下操作:
public function update($id)
{
$user = \App\User::findOrFail($id);
$input = Request::all();
$user->cities()->sync($input['cities']);
return redirect()->back();
}
您還需要更改復選框名稱,以發送一系列城市並命名為cities[]
@foreach ($cidades as $cidadesnome)
<label>
{!! Form::checkbox('cities[]', $cidadesnome->id, (in_array($cidadesnome->id, $number)), ['class' => 'field']) !!}{!! $cidadesnome->name !!}
</label>
@endforeach
所有這些都假設您在模型中定義了正確的關系。 我看到您沒有為列名遵循雄辯的命名約定 。 我強烈建議您關注他們。 它們將使您的關系定義更加容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.