我想根据所选的国家/地区添加一个国家/地区电话号码前缀。我希望它与电话号码一起保存为数据库中的同一列。最好的选择是添加另一列前缀(在我的情况下是countryCode(,但我希望它们连接在一起。由于我在PHP方面缺乏一些经验,所以我有点吃力。这是我的HTML。有什么建议或指示吗?
<div>
<label for="countryCode" value="Country Code"/>
<select name="countryCode">
<option>Denmark (+45)</option>
<option>Mauritius (+230)</option>
</select>
</div>
<div>
<label for="phone" value="Phone"/>
<input type="number" name="phone"/>
</div>
这是我的迁移表
$table->string('phone')->nullable();
这是我的强化文件:
Validator::make($input,['phone' => ['required', 'string'],])->validate();
$company = Model::firstOrCreate([]],['phone' => $input['phone'],]);
这是我的型号:
protected $fillable = [
'phone',
];
这是两步身份验证的一部分。这是第一步。我删除了大部分不必要的代码。
为了使代码正常工作,首先在html中为国家选择器添加值,以便您可以在控制器中访问它们
<div>
<label for="countryCode" value="Country Code"/>
<select name="countryCode">
<option value="+45">Denmark (+45)</option>
<option value="+230">Mauritius (+230)</option>
</select>
</div>
<div>
<label for="phone" value="Phone"/>
<input type="number" name="phone"/>
</div>
之后,您应该验证控制器中的两个输入字段:
Validator::make($input,['phone' => ['required', 'string'],
'countryCode' => ['required', 'string']
])->validate();
最后,在控制器中,您可以将两个输入连接起来,并将其存储在一个字段中。操作员:
$company = Model::firstOrCreate([]],['phone' => $input['countryCode'].$input['phone'],]);
如果上面的代码不起作用(我只是从问题中复制了它(,请尝试这个:
$company = Model::create(['phone' => $input['countryCode'].$input['phone']]);