【问题标题】:Laravel replicate multiple rows didn't workLaravel 复制多行不起作用
【发布时间】:2020-03-02 10:36:21
【问题描述】:

我想将多个关系行复制到具有差异作业 ID 的同一个表中。 但它不起作用。

这是我的代码

$parentJobUnits = Unit::where('job_id',$jobId)->get();  //may be single or multiple rows for units.

$JobCopy = $job->replicate()->save();    //main job copied for new units.

$partsCopy = array_map(function(Unit $unit) use($JobCopy)
{

     $newUnit = $unit->replicate();
     $newUnit->job_id = $JobCopy->id;
     return $newUnit->save();

}, $parentJobUnits);

以上代码不适用于多行复制。

【问题讨论】:

    标签: php laravel-5 eloquent replicate


    【解决方案1】:

    尝试删除导致真正返回而不是复制记录的save 方法

    正确:$job->replicate();
    错误:$job->replicate()->save();

    否则我会做类似...

    $parentJobUnits = Unit::where('job_id',$jobId)->get();
    
    foreach($parentJobUnits as $unit)
    {
        $unit->replicate()->save();
    }
    

    【讨论】:

      【解决方案2】:

      replicate() 函数不适用于 get() 函数。它仅适用于find() 函数。

      $parentJobUnits = Unit::where('job_id',$jobId)->get();
      
      foreach($parentJobUnits as $key => $value)
      {
          $new_unit = Unit::find($value->id)->replicate(); // $value->id is your primary key
          $new_unit->save();
      }
      

      它将复制多行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-26
        • 2013-03-28
        • 1970-01-01
        • 2021-12-08
        • 2018-07-09
        • 2015-03-04
        • 1970-01-01
        相关资源
        最近更新 更多