Задать вопрос
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
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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