该网站是一个预订系统,客户首先必须填写预订请求表。单击下一步后,用户将被移至预订摘要,在此他们可以查看预订摘要。
我使用session()->put
来存储在预订请求表中输入的字段。一切正常
$request->session()->put('firstName', $request->firstName);
$request->session()->put('lastName', $request->lastName);
$request->session()->put('phoneNumber', $request->phoneNumber);
我的问题是,在客户单击预订摘要中的确认之后,我无法在数据库中存储在预订请求表中输入的值。仅在客户单击预订摘要中的确认按钮后,预订请求表中的值才应存储在数据库中。
$client_info = new client;
$client_info->firstName = $request->session()->put('firstName', $request->firstName);
$client_info->lastName = $request->session()->put('lastName', $request->lastName);
$client_info->phoneNumber = $request->session()->put('phoneNumber', $request->phoneNumber);
$client_info->emailAddress = $request->session()->put('emailAddress', $request->emailAddress);
$client_info->save();
我尝试使用此方法,但收到 SQLSTATE [23000]:违反完整性约束:1048列'firstName'不能为空错误。我认为会话数据已删除?我是laravel的新手,所以很抱歉,如果我对问题的解释令人困惑。
答案 0 :(得分:2)
在将数据存储到数据库中的同时,您应该从session中获得价值:
$client_info = new client();
$client_info->firstName = $request->session()->get('firstName');
$client_info->lastName = $request->session()->get('lastName');
$client_info->phoneNumber = $request->session()->get('phoneNumber');
$client_info->emailAddress = $request->session()->get('emailAddress');
$client_info->save();
详细了解会话:here
当您遇到此错误时:
SQLSTATE [23000]:违反完整性约束:1048列“ firstName”不能为空(SQL:插入客户端(firstName,lastName,phoneNumber,emailAddress,updated_at,created_at))值(,,,,2018-11-30 10:24:56,2018-11-30 10:24:56))
您的客户模型内部:
protected $fillable=['firstName','lastName','phoneNumber','emailAddress'];
并确保在您的数据库,客户端表中:firstName,lastName,phoneNumber,emailAddress允许使用空值
还要检查您是否从会话中获取价值,这可能会导致会话值未正确存储。