Arrays 如何在Laravel中的一行数据库中插入(数组值)多于1个输入值?
我有一个类似于bellow的表单,表单中有一个以上的输入,其中有一个名称类似于bellow:Arrays 如何在Laravel中的一行数据库中插入(数组值)多于1个输入值?,arrays,laravel,forms,input,Arrays,Laravel,Forms,Input,我有一个类似于bellow的表单,表单中有一个以上的输入,其中有一个名称类似于bellow: <form> <input type="text" name="family"> <input type="text" name="inputCurrName[]"> <input type="text" name="inputCurrName[]"> <input type="text" name="inputCurrName[]"> <
<form>
<input type="text" name="family">
<input type="text" name="inputCurrName[]">
<input type="text" name="inputCurrName[]">
<input type="text" name="inputCurrName[]">
<input type="submit" name="submit" value="submit">
</form>
我使用了下面的代码,但它在数据库中保存了3条记录
$input = $request->all();
for ($i = 0; $i <= count($input['inputCurrName']); $i++) {
$user_data = [
'family' => $input['family'],
'curr_name' => $input['inputCurrName'][$i],
];
User::Creat($user_data);
}
$input=$request->all();
对于($i=0;$i$input['family'],
'curr_name'=>$input['inputCurrName'][$i],
];
用户::创建($User\u data);
}
我该怎么办?您正在执行一个
for循环
检查inputCurrName
的长度,因此它在每个inputCurrName
中循环,这就是为什么每个FamilyName
获得3条记录的原因。在这种情况下,您只需要关心每个FamilyName
一条记录
有几种方法可以使用FamilyName
将inputCurrName
值的array
插入到一条记录中
可以使用创建值的可存储表示形式,并在从数据库检索时对其进行解码
-或-
插入记录时,可以使用创建逗号分隔的列表。从数据库检索时,使用可迭代每个逗号分隔的值
-或-
如果您更喜欢json,那么可以使用serialize()和unserialize()执行相同的操作
使用以下代码将为上表提供一个示例。curr\u name\u optional
是showcase Inflode()的$user\u data
数组的一部分
姓氏:
当前名称:
当前名称:
当前名称:
此外,在插入数据库之前,我会确保对表单输入数据进行修剪和清理。您正在执行一个for循环
检查inputCurrName
的长度,因此它会在每个inputCurrName
中循环,这就是为什么每个FamilyName
会得到3条记录的原因。在这种情况下,您只需要关心每个FamilyName
一条记录
有几种方法可以使用FamilyName
将inputCurrName
值的array
插入到一条记录中
可以使用创建值的可存储表示形式,并在从数据库检索时对其进行解码
-或-
插入记录时,可以使用创建逗号分隔的列表。从数据库检索时,使用可迭代每个逗号分隔的值
-或-
如果您更喜欢json,那么可以使用serialize()和unserialize()执行相同的操作
使用以下代码将为上表提供一个示例。curr\u name\u optional
是showcase Inflode()的$user\u data
数组的一部分
姓氏:
当前名称:
当前名称:
当前名称:
此外,我会确保在插入数据库之前对表单输入数据进行修剪和清理。您只需使用foreach,然后将数据转换为json格式,然后插入到一行中即可
不确定它是如何工作的,但是,您似乎忘记了在表单中传递@csrf令牌
。在
标记下方添加@csrf
。您只需使用foreach,然后将数据转换为json格式,然后插入到一行中即可
不知道它是如何工作的,但是,你似乎忘记了在你的表单中传递csrf令牌
。将@csrf
添加到
标记的正下方。非常感谢@Woodrow,你的三种方法都起了作用。哪种方法更好、更标准?你能告诉我如何在Pretty Vie中显示Laravel Blade中的序列化、内爆、json_编码数据吗w喜欢这样吗?>FamilyName::Ali,CurrName::Laura,Peter,Jack
我想在laravel blade中这样展示:非常感谢@Woodrow,你的三种方式都奏效了!哪种方式更好更标准?你能告诉我如何在laravel blade中以这样漂亮的视图展示序列化、内爆、json编码数据吗?>FamilyName::Ali,CurrName::Laura,Peter,Jack
我想在laravel blade中这样展示:谢谢,@Woodrow ways工作了,我已经测试了你的解决方案,但它在$arr[$key]=>$arr[$value]上有语法错误;
谢谢,@Woodrow ways工作了,我已经测试了你的解决方案,但它在$arr[$key]=>$arr[$value]上有语法错误;
$input = $request->all();
for ($i = 0; $i <= count($input['inputCurrName']); $i++) {
$user_data = [
'family' => $input['family'],
'curr_name' => $input['inputCurrName'][$i],
];
User::Creat($user_data);
}
+------------+---------------------------------------------------------+
| FamilyName | CurrName |
+------------+---------------------------------------------------------+
| Ali | a:3:{i:0;s:5:"Laura";i:1;s:6:"Peter ";i:2;s:4:"Jack";} |
| Ali | Laura,Peter,Jack |
+------------+---------------------------------------------------------+
<?php
if(isset($_POST) && count($_POST) > 0) {
$inputFamilyName = $_POST['family'];
$inputCurrentName = $_POST['inputCurrName'];
// Your laravel code here..
$user_data = [
'family' => $inputFamilyName,
'curr_name' => serialize($inputCurrentName),
'curr_name_optional' => implode(',', $inputCurrentName),
'curr_name_optional_1' => json_encode($inputCurrentName)
];
echo "<pre>";
print_r($user_data);
echo "</pre>";
}
?>
<form method="post">
Family Name: <input type="text" name="family"/> <br/>
Curr Name: <input type="text" name="inputCurrName[]"/><br/>
Curr Name: <input type="text" name="inputCurrName[]"/><br/>
Curr Name: <input type="text" name="inputCurrName[]"/><br/>
<input type="submit" name="submit" value="submit"/>
</form>
$arr = [];
foreach($request->get('inputCurrName') as $key => $value){
$arr[$key] => $value;
}
$user_data = [
'family' => $request->get('family_name'),
'curr_name' => json_encode($arr),
];
User::Create($user_data);