Laravel模型没有保存但说是这样(在Observer类中)

时间:2018-07-25 19:26:53

标签: php laravel

我有一个任务模型,我试图做一个简单的创建来测试我的一个观察者类中的某些东西。这是我的创建代码。

private function generateTasks(Event $event)
{
    $tasks = [];

    $tasks[] = [
        'event_id' => $event->id,
        'title' => 'This is a test',
        'description' => 'this is a description',
        'due_on' => Carbon::now()->addDays(14)
    ];

    dump(Task::all());
    // foreach ($tasks as $task) {
        $task = Task::create([
            'event_id' => $event->id,
            'title' => 'This is a test',
            'description' => 'this is a description',
            'due_on' => Carbon::now()->addDays(14)
        ]);

        if ($task->save()) {
            echo "Saved";
        }
        else {
            echo "NO SAVE";
        }

        dump($task);
    // }

    dd($tasks, "DONE");
}

输出如下:

enter image description here

当我查看数据库时,表仍然保留120行。这真的很奇怪,因为它表示正在节省。当我抓取所有任务时,您可以在输出中看到它有120行。如果您查看我的最新输出ID,您会发现我的最高为133。

有什么想法吗?

更新

我的可填充内容:

protected $fillable = [
    'title', 'description', 'due_on', 'event_id', 'completed'
];

Completed具有默认值false。

我的桌子看起来像这样,给大家一个主意:

enter image description here

2 个答案:

答案 0 :(得分:0)

create会执行您不需要再次执行的save方法,您可以按照以下步骤进行操作:

 private function generateTasks(Event $event)
{

 $tasks = [];

$tasks[] = [
    'event_id' => $event->id,
    'title' => 'This is a test',
    'description' => 'this is a description',
    'due_on' => Carbon::now()->addDays(14)
];
    $task = Task::create([
        'event_id' => $event->id,
        'title' => 'This is a test',
        'description' => 'this is a description',
        'due_on' => Carbon::now()->addDays(14)
    ]);

    if ($task) {
        echo "Saved";
    }
    else {
        echo "NO SAVE";
    }

dd($tasks, "DONE");

}

答案 1 :(得分:0)

我最终从laravel chat获得了帮助。向他们大喊大叫。问题是我在事务内部使用了转储模具。这导致了似乎是节省的时间,但是随后,由于在事务提交之前调用了die,因此它将所有内容回滚。这是一个愚蠢的错误。感谢您的所有帮助!