我有一个输入来输入标签。每门课程都会有很多标签,我想将这些标签保存在同一列中。
输入
<div class="card border-grey border-lighten-3 px-2 py-2 box-shadow-1 mt-1">
<h4 class="content-header-title"> Tags </h4>
<select name="tags[]" data-tags="true" id="tags" class="form-control" multiple="multiple">
<option value=""></option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
脚本选择2
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>
<script>
$(document).ready(function(){
$('#tags').select2({
placeholder: "Tags",
tags: true
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
控制器
function save(Request $request)
{
$lesson = new Lesson;
$lesson->tags= $request->input('tags');
$lesson->content = $request->content;
$lesson->save();
return redirect(url('admin/lessons/edit'))->with('message', 'Successful');
}
Run Code Online (Sandbox Code Playgroud)
但是当我点击保存时,出现这样的错误:
传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是给定的数组、字符串类型,在 C:\Xampp-install\htdocs\eduwebsite\vendor\laravel\framework\src\Illuminate\Database\Query 中调用\Grammars\Grammar.php 第 869 行
如果你想将标签作为数组存储在数据库中,你可以使用序列化
$lesson->tags= serialize($request->tags);
Run Code Online (Sandbox Code Playgroud)
或者更好的方法是使用Array & JSON Casting
class Lesson extends Model
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'tags' => 'array',
];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8762 次 |
| 最近记录: |