使用 Laravel 8 将单个列中的标签输入值存储到数据库中
Posted
技术标签:
【中文标题】使用 Laravel 8 将单个列中的标签输入值存储到数据库中【英文标题】:Store tag input values in a single column into database using Laravel8 【发布时间】:2021-11-22 11:05:32 【问题描述】:我有以下带有tag input
的表格。
<form id="filialeform" action="filiales" enctype="multipart/form-data">
csrf_field()
<input type="hidden" id="id_hidden" name="id" />
<div class="form-group">
<label>Filiale</label>
<input type="text" class="form-control" name="filiale" id="filiale" placeholder="Filiale">
</div>
<div class="form-group">
<label>Adm_Email</label>
<input data-role="tagsinput" type="text" name="adm_email" id="adm_email">
</div>
<div class="modal-footer">
<input type="hidden" name="action" id="action" />
<input type="hidden" name="hidden_id" id="hidden_id" />
<input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="Enregistrer" />
<span id="form_result"></span>
</div>
</form>
我有以下数据库表:
public function up()
Schema::create('filiales', function (Blueprint $table)
$table->increments('id_filiale');
$table->string('filiale',80);
$table->string('adm_email',500);
$table->integer('actif');
$table->timestamps();
);
我正在尝试将数据存储到数据库中,以便输入标签中输入的值存储在以伽马分隔的表格的adm_email
列中。
所以我正在尝试以下代码:
public function store(Request $request)
$input = $request->all();
$tags = explode(",", $request->adm_email);
$form_data = array(
'filiale' => $request->filiale,
'adm_email' => $tags
);
Filiale::create($form_data);
return response()->json(['success' => 'Data Added successfully.']);
但我收到以下错误:
message: "Array to string conversion"
我不知道我怎么能意识到这一点。如果您有任何想法,请提供帮助。
【问题讨论】:
你能告诉我数据库中的示例输入和预期的output
吗?
因为您试图将adm_emial
保存为Array
类型。
您正在使用explode()
方法及其制作数组,您无法在数据库中插入数组。
【参考方案1】:
转到 Model/Filiale.php 并添加以下内容:
protected $casts = [
'adm_email' => 'array',
];
模型自动与数组进行转换。
【讨论】:
【参考方案2】:在这一行:
$tags = explode(",", $request->adm_email);
explode 函数接受一个字符串(在这种情况下为 $request->adm_email)并将其转换为一个数组,因此当您尝试存储它时:
'adm_email' => $tags
它失败了,因为您无法在数据库中存储数组。相反,您可以使用 :
将其转换为 json'adm_email' => json_encode($tags)
然后使用 json 从 json 转换它:
json_decode()
当您从数据库中检索它并希望对其进行处理时。
【讨论】:
感谢您的回答,现在可以使用了以上是关于使用 Laravel 8 将单个列中的标签输入值存储到数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过控制器将两个不同模型的值作为 Laravel 8 中的单个返回变量传递给视图文件