Php 将阵列输入字段保存为laravel中的长字符串
大家好,我的刀片中有一个输入字段,它是一个数组Php 将阵列输入字段保存为laravel中的长字符串,php,laravel,laravel-5,laravel-5.5,Php,Laravel,Laravel 5,Laravel 5.5,大家好,我的刀片中有一个输入字段,它是一个数组 <div class="form-group"> <div class="input_fields_wrap"> <label for="dependents">Dependents</label> <button class="add_field_button
<div class="form-group">
<div class="input_fields_wrap">
<label for="dependents">Dependents</label>
<button class="add_field_button btn btn-sm">+</button>
<input type="text" name="dependents[]" class="form-control input-sm">
</div>
</div>
家属
+
我想将其保存为一个长字符串,每个字符串之间用逗号分隔。我会将其作为家属保存在数据库中。可能吗?是的,可能。在向数据库插入时使用
$dependents = implode(',', $request->input('dependents'));
并在从数据库检索到数组时使用
$dependents[] = explode(',', $db_items->dependents);
是的,有可能。在向数据库插入时使用
$dependents = implode(',', $request->input('dependents'));
并在从数据库检索到数组时使用
$dependents[] = explode(',', $db_items->dependents);
是的,您可以借助内爆
$data = implode(',',$dataArray);
但我建议您使用
为了得到实际的数组,您可以使用
unserialize($data); // $data should be serialize
使用键为的关联/多维数组时,您的工作量会减少
是的,您可以借助内爆
$data = implode(',',$dataArray);
但我建议您使用
为了得到实际的数组,您可以使用
unserialize($data); // $data should be serialize
使用键为的关联/多维数组时,您的工作量会减少
如前所述,您可以使其内爆/爆炸
一般来说,以这种方式保存数据几乎不可能进行搜索。通常最好将其保存在单独的表中,因为它本质上是一种多对一关系。这取决于您的决定,但我不会只是为了“抄近路”,因为像计数和分组这样的事情会受到影响,因为索引这样的字段比单独的表提供的性能优势要小得多
这就是说,我有一个建议,就是在前面和后面添加代表,如下所示:
,1,2,12,13,145,
你为什么问。因为考虑这个查询
SELECT * FROM table WHERE field LIKE '%1%'
现在,如果该列表是字段
,它将匹配任何具有1
的行。这可能不是你想要的。例如匹配23215,54
。因此,简单的解决方案是在前面、后面和查询中添加分隔符,如下所示
SELECT * FROM table WHERE field LIKE '%,1,%'
现在我们只匹配带有,1,
的字段,因为我们可以在搜索中包含分隔符。很明显,,1,
与215
不同
您必须仔细考虑如何使用这些数据,因为您将仅限于使用如%data%
等查询进行搜索和分组
您可以通过以下操作简单地添加它们:
$var = ','.implode(',', $arr).',';
好的方面是,如果您选择使用这些额外的分隔符,有一些简单的方法可以删除它们:
$var = trim($var,',');
//then we would explode it
$arr = explode(',', $var);
您甚至可以在SQL中使用
SELECT TRIM(BOTH ',' FROM field ) AS trimmed;
在选择分隔符时,我会非常小心,如果数据中有一个,
,请选择类似|
的内容,并确保从输入数据中删除分隔符,否则将来可能无法正确分离数据
我通常在使用具有物化路径模式的树数据时使用此方法,但这是另一个时代的故事…如前所述,您可以将其内爆/分解
一般来说,以这种方式保存数据几乎不可能进行搜索。通常最好将其保存在单独的表中,因为它本质上是一种多对一关系。这取决于您的决定,但我不会只是为了“抄近路”,因为像计数和分组这样的事情会受到影响,因为索引这样的字段比单独的表提供的性能优势要小得多
这就是说,我有一个建议,就是在前面和后面添加代表,如下所示:
,1,2,12,13,145,
你为什么问。因为考虑这个查询
SELECT * FROM table WHERE field LIKE '%1%'
现在,如果该列表是字段
,它将匹配任何具有1
的行。这可能不是你想要的。例如匹配23215,54
。因此,简单的解决方案是在前面、后面和查询中添加分隔符,如下所示
SELECT * FROM table WHERE field LIKE '%,1,%'
现在我们只匹配带有,1,
的字段,因为我们可以在搜索中包含分隔符。很明显,,1,
与215
不同
您必须仔细考虑如何使用这些数据,因为您将仅限于使用如%data%
等查询进行搜索和分组
您可以通过以下操作简单地添加它们:
$var = ','.implode(',', $arr).',';
好的方面是,如果您选择使用这些额外的分隔符,有一些简单的方法可以删除它们:
$var = trim($var,',');
//then we would explode it
$arr = explode(',', $var);
您甚至可以在SQL中使用
SELECT TRIM(BOTH ',' FROM field ) AS trimmed;
在选择分隔符时,我会非常小心,如果数据中有一个,
,请选择类似|
的内容,并确保从输入数据中删除分隔符,否则将来可能无法正确分离数据
我通常在使用带有物化路径模式的树数据时使用此方法,但这是另一个时代的故事…任何字符串都可以保存在数据库中。但我的意思是,要将其保存为数组,我如何将其保存为一个字符串@u_mulder你所说的是什么意思,我会将其作为依赖项保存在我的数据库中如果是表中的实际记录,几乎可以肯定,最好创建一个透视表以保持引用完整性。将来,当有人更改代码并忘记字符串字段中填充了任意关系时,您将避免许多麻烦。但我计划将其保存为长字符串,以便能够将其保存在一个字段中任何字符串都可以保存在数据库中。但我的意思是,要将其保存为数组,如何将其设置为一个字符串@u_Mulder您所说的是什么意思?我会将其作为依赖项保存在我的数据库中
?如果“依赖项”是表中的实际记录,您几乎可以肯定最好创建一个透视表来维护引用完整性。你会避免很多头痛在t