【问题标题】:Laravel: Store Records in Polymorphic One to Many RelationshipLaravel:以多态一对多关系存储记录
【发布时间】:2019-03-31 17:29:09
【问题描述】:

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

表格

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();
    }

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

报错

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

【问题讨论】:

    标签: laravel-5.8


    【解决方案1】:

    终于明白了

    if ($request->phone) {
         foreach ($request->phone as $key => $value) {
            $phone = new Phone;
            $phone->name = $value;
            $nyaba->phones()->save($phone);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 2017-08-20
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2018-06-26
      • 2015-09-11
      • 1970-01-01
      • 2013-09-19
      相关资源
      最近更新 更多