在单个数据库行中连接两个输入



我想根据所选的国家/地区添加一个国家/地区电话号码前缀。我希望它与电话号码一起保存为数据库中的同一列。最好的选择是添加另一列前缀(在我的情况下是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']]);

最新更新