1

我有三个相互关联的表抛出多态一对多关系

users
    id - integer
    name - string

office
    id - integer
    name - string

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

我想将电话号码添加到phones与特定用户相关的表中

用户.php

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

电话.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);
}

但它给了我一个错误

传递给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 的参数 1 必须是 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);
}

它给出了错误

传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,int 给定,在 C:\Server\data\htdocs\justice_way\vendor\laravel\framework\src\Illuminate\Database\Query 中调用\Grammars\Grammar.php 在第 871 行

4

1 回答 1

1

最后我得到了它

if ($request->phone) {
     foreach ($request->phone as $key => $value) {
        $phone = new Phone;
        $phone->name = $value;
        $nyaba->phones()->save($phone);
   }
}
于 2019-03-31T09:29:09.950 回答