首页 > 解决方案 > 如何摆脱 Laravel 中的“没有默认值”?

问题描述

我有一个错误:

doesnt have a default value (SQL: insert into `news` (`updated_at`, `created_at`) values (2021-02-09 18:45:57, 2021-02-09 18:45:57))

我读到,当您尝试插入 NULL 值时会出现此错误,但对我来说最奇怪的部分是,尽管出现错误,它仍然将此数据保存在 DB 中(具有正确创建、更新的字段)。这是控制器中的代码:

public function addArticle(Request $request)
{
    $data = $request->json()->all();
    $news = new News;

    $news->insert([
        'title' => $data['title'],
        'content' => $data['content'],
        'photo' => $data['photo'],
        'author' => 1,
        "created_at"=> now(),
        "updated_at"=> now(),
    ]);

    $news->save();

}

标签: mysqlsqllaraveltimestamp

解决方案


您正在尝试使用雄辩的模型“新闻”在数据库中创建一个新对象。在这一行中$news = new News;,您实例化一个对象而不将参数传递给构造函数。之后,您尝试插入该数据。我猜异常发生在第 4 行。

尝试这样的事情

$news = new \App\Models\News([
    'title' => $data['title'],
    'content' => $data['content'],
    'photo' => $data['photo'],
    'author' => 1,
    "created_at"=> now(),
    "updated_at"=> now(),
]);

$news->save();

或者

$isCreated = \App\Models\News::create([
    'title' => $data['title'],
    'content' => $data['content'],
    'photo' => $data['photo'],
    'author' => 1,
    "created_at"=> now(),
    "updated_at"=> now(),
]);

推荐阅读