【问题标题】:General error: 1364 Field 'email' doesn't have a default value一般错误:1364 字段“电子邮件”没有默认值
【发布时间】:2020-01-25 21:13:06
【问题描述】:

SQLSTATE[HY000]:一般错误:1364 字段“电子邮件”没有默认值(SQL:插入form1snameupdated_atcreated_at)值(jhiui,2019- 09-25 15:39:57, 2019-09-25 15:39:57))

我的控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\form1;

class formcontroller extends Controller
{
    public function store(Request $request ){

    //dd($request->all());
        $form1=new form1;

        $form1->name=$request->yourname;
        $form1->save();
        $form1->email=$request->email;
        $form1->save();
        $form1->tp=$request->tp;
        $form1->save();    
        $form1->heading=$request->subject;
        $form1->save();
        $form1->text=$request->message;
        $form1->save();
        $form1->image=$request->image;
        $form1->save();
    }
}

【问题讨论】:

  • 不要将您的代码发布为图像...这是文本;将代码复制并粘贴到您的问题中,这样我们就不必导航到 3 个不同的链接来查看您的问题,因此我们可以轻松帮助调试。
  • 话虽如此,看看你的第二张图片,不要在每个属性之后调用$form1->save()。添加所有属性并调用$form1->save()一次

标签: php mysql laravel


【解决方案1】:

就像我在 cmets 中所说,不要在每次属性分配后调用 ->save()save() 将数据保存到数据库中,如果您缺少属性(列值),您就会遇到问题。此外,这对性能非常重要,因为您要调用 insert,然后为每个属性调用 update...要解决此问题,只需调用一次 save()

public function store(Request $request){

    $form1 = new form1();

    $form1->name = $request->yourname;
    $form1->email = $request->email;
    $form1->tp = $request->tp;
    $form1->heading = $request->subject;
    $form1->text = $request->message;
    $form1->image = $request->image;

    $form1->save();
}

【讨论】:

  • 非常感谢亲爱的。由您指导修复,数据已进入数据库
  • 没问题。请考虑支持/接受此答案。
猜你喜欢
  • 2019-11-23
  • 2021-02-28
  • 2021-10-13
  • 2017-03-02
  • 2020-02-03
  • 2020-02-27
  • 2020-07-23
  • 2016-06-13
  • 2021-01-18
相关资源
最近更新 更多