【问题标题】:Call to a member function replicate() on null (Laravel 5.3)在 null 上调用成员函数 replicate() (Laravel 5.3)
【发布时间】:2017-03-10 23:31:15
【问题描述】:

我正在使用 laravel 5.3,我必须从表中存储重复的行,这是我的功能,我收到以下错误 在 null 上调用成员函数 replicate() 请帮我修复它 函数

public function copy($id){

$task = Task::find(1);
$newTask = $task->replicate();
$newTask->save();
    }

【问题讨论】:

  • 您确定$task 的值正确吗?
  • 是的,我已经在 Task 中仔细定义了每一件事@Sougata Bose
  • 嗯,错误消息说$task 为空。很可能没有具有该 ID 的任务。
  • 可以添加dd($task) 并显示输出吗?
  • 是的,我尝试它有 null 我尝试不同的东西,因为我在这里传递 $id 而不是 1 作为 $task = Task::find($id);它可以工作,但复制了 3 次 @Sougata Bose

标签: php laravel duplicates


【解决方案1】:

```

公共函数拷贝($id){

$task = Task::find(1);
if (null !== $task) {
    $newTask = $task->replicate();
    if (null !== $newTask) {
        $newTask->save();
    }
}

} ```

【讨论】:

    【解决方案2】:

    为了使这个问题更具可读性,您可以使用firstOrFail method of Laravel's Eloquent。如果没有找到 id - 1 的结果,则抛出 Illuminate\Database\Eloquent\ModelNotFoundException,您可以捕获并继续进行。

    代码如下:

    public function copy($id) {
       try {
         $task = Task::firstOrFail(1);
         $newTask = $task->replicate();
         $newTask->save();
       } catch(Exception $e) {
          // If nothing found with that (1) id, then the throws exception is catched here!
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2016-06-29
      • 2018-04-03
      • 2021-10-06
      相关资源
      最近更新 更多