X-core
@X-core
начинающий веб разработчик

Как обновить запись поля таблицы?

Предыдущие записи редактируются.
Не получается редактировать запись телефона.
Есть две таблицы:таблица Post(с полями: id, name,surname) и связывающая табл. Phones( с полями: id,post_id,number) с внешним ключом post_id, используются отношения один ко многим.
Поле number был уникальным, но при редактировании телефона постоянно выскакивало ошибку duplicate key.
Input поля Телефон является динамичным чтобы пользователь мог добавить несколько телефонов.После добавлю ограничения на кол-во номеров.
После чего убрал уникальность поля и решил без него проверить редактирование- ошибок нет,но и редактирование не происходит,данные остаются прежними. Надеюсь с Вами смогу решить.
public function update(Request $request, $id)
    {
        $request->validate([
            'name' => 'required|max:255',
            'surname' => 'required|max:255',
            'phone' => 'required',
        ]);

        $post = Post::find($id);
        $post->name = $request->get('name');
        $post->surname = $request->get('surname');

       foreach ($request->get('phone') as $phone) {

          $post->phones()->where('post_id', $id)->update(['number' => $phone]);
            $post->save();
            }
        return redirect('/posts')->with('success', 'Запись отредактирована');
    }

class Post extends Model
{
    protected $fillable = [
        'name', 'surname'
    ];

    public $timestamps = false;
    
    public function phones()
    {
        return $this->hasMany('App\Models\Phone');
    }


class Phone extends Model
{
    protected $fillable = [
      'number', 'post_id'
    ];
    public $timestamps = false;
    
    public function post()
    {
        return $this->belongsTo('App\Models\Post', 'post_id', 'id');
    }
}


<form method="POST" action="{{route('posts.update', $post)}}">
                {{ csrf_field() }}
                @method('PATCH')
                <button type="submit" class="btn btn-success">Отредактировать запись</button>
                <div class="form-group">
                    <label for="post-name">Имя</label>
                    <input type="text" name="name" value="{{$post->name}}" class="form-control" id="post-name">
                </div>
                <div class="form-group">
                    <label for="post-surname">Фамилия</label>
                    <input type="text" name="surname" value="{{$post->surname}}"  class="form-control" id="post-surname">
                </div>
                <label for="post-phone">Телефон</label>
                @foreach ($post->phones as $data)

                <div class="entry input-group" id="dynamic_field">
                    <input type="text" name="phone[]" value="{{$data->number}}" class="form-control" id="post-phone">
                    <span class="input-group-btn">
                            <button class="btn btn-success btn-add" name="add" id="add" type="button">
                                <span class="glyphicon glyphicon-plus"></span>
                            </button>
                        </span>
                </div>
                @endforeach
            </form>


5ece40124e149694107312.png
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы