Laravel: храните записи в полиморфных отношениях один-ко-многим - PullRequest
0 голосов
/ 29 марта 2019

У меня есть три таблицы, которые связывают друг с другом бросок Полиморфные отношения Один-ко-многим

Таблицы

users
    id - integer
    name - string

office
    id - integer
    name - string

phones
    id - integer
    name - string
    phones_id - integer
    phones_type - string

Я хочу добавить телефонные номера в таблицу phonesотносится к конкретному пользователю

user.php

public function phones()
    {
        return $this->morphMany('App\Phone', 'phones');
    }

Phone.php

public function phones()
    {
        return $this->morphTo();
    }

Создать.blade.php

<form action="{{route('dashboard.users.store')}}" method="post">
<div class="input-group control-group after-add-more">
   <input type="text" name="phone[]" class="form-control">
   <div class="input-group-btn"> 
      <button class="add-more" type="button">Add</button>
    </div>
</div>
<button type="submit">save</button>
</form>

<!-- Copy Fields -->
<div class="copy" hidden>
    <div class="control-group input-group">
        <input type="text" name="phone[]" class="form-control">
        <div class="input-group-btn"> 
        <button class="remove" type="button">Remove</button>
        </div>
    </div>
</div>

Javascript

<script>
   $(document).ready(function() {             
        $(".add-more").click(function(){ 
            var html = $(".copy").html();
            $(".after-add-more").after(html);
         });
         $("body").on("click",".remove",function(){ 
         $(this).parents(".control-group").remove();
   });

</script>

Я пытаюсь сохранить записи на телефонах Используя этот код в UserController.php

if ($request->phone) {
  $user->phones()->saveMany($request->phone);
}

но это дает мне ошибку

Аргумент 1, передаваемый в Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save (), должен быть экземпляром Illuminate \ Database \ Eloquent \ Model, заданная строка называетсяв C: \ Server \ data \ htdocs \ Justice_way \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany.php в строке 264

dd($request) дает мне

"phone" => array:2 [▼
    0 => "+1 (776) 209-9366"
    1 => "+1 (444) 579-3232"
  ]

Когда я пытаюсь

if ($request->phone) {
     $phone = new Phone;
     $phone->name = $request->phone;
     $user->phones()->save($phone);
}

, он выдает ошибку

Аргумент 1 передается в Illuminate \ Database \ Grammar :: parameterize () must bТип массива int, указанный в C: \ Server \ data \ htdocs \ Justice_way \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Grammars \ Grammar.php, в строке 871

1 Ответ

0 голосов
/ 31 марта 2019

Наконец-то я понял

if ($request->phone) {
     foreach ($request->phone as $key => $value) {
        $phone = new Phone;
        $phone->name = $value;
        $nyaba->phones()->save($phone);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...