php - 如何在 Laravel 的模态中指定创建函数的可为空值?
问题描述
在模型中,我们如何使用 create 函数插入一个可以为空的已验证字段?例如,在 RegisterController 中:基本验证器 + 创建函数。如果我没有发送google_id
或facebook_id,
create 函数在字段上返回一个未定义的索引(显然)。插入它们的正确方法是什么?
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['nullable', 'email', 'unique:users'],
'google_id' => ['nullable', 'string', 'unique:users'],
'facebook_id' => ['nullable', 'string', 'unique:users'],
'twitter_id' => ['nullable', 'string', 'unique:users'],
'phone' => ['required', 'string', 'max:10', 'min:10', 'unique:users', "regex:/(^[1-9][0-9]*$)/"],
'country_code' => ['required', 'string', 'max:255', 'exists:'.config('countries.table_name').',calling_code'],
'password' => ['required', 'string', 'min:8'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'phone' => $data['country_code'].$data['phone'],
'google_id' => $data['google_id'] ? $data['google_id'] : null,
'facebook_id' => $data['facebook_id'] ? $data['facebook_id'] : null,
'twitter_id' => $data['twitter_id'] ? $data['twitter_id'] : null,
'password' => Hash::make($data['password']),
]);
}
我知道这是一个基本问题,我知道如何忽略它们,但我需要知道正确的格式是什么。
解决方案
使用 php 7 中可用的新格式
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'phone' => $data['country_code'].$data['phone'],
'google_id' => $data['google_id']??null,
'facebook_id' => $data['facebook_id']??null,
'twitter_id' => $data['twitter_id']??null,
'password' => Hash::make($data['password']),
]);
}
推荐阅读
- java - 为什么在 main 方法中使用时在静态块中声明的变量找不到?
- python-3.x - Python aiosqlite 覆盖与 pysqlcipher3 的连接
- python - 检查一个数字在 Python 中是否具有相同的数字
- oauth-2.0 - 调用 Xero 刷新令牌 api 时出现错误“unsupported_grant_type”
- javascript - 如何将反应选项卡链接到下拉列表?
- python - 将数据框列与二维列表 python 进行比较
- javascript - 如何将两个相邻的 DIV 合并为一个?
- jira-rest-api - 如何打开 doc.atlassian.com 的 .wadl 文件?
- solr - 如何帮助我的 Solr 引擎理解相关术语?
- ssl - 使用 HTTPS 在 Apache Ignite 中访问 REST API