Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Laravel中的一行数据库中插入(数组值)多于1个输入值?_Arrays_Laravel_Forms_Input - Fatal编程技术网

Arrays 如何在Laravel中的一行数据库中插入(数组值)多于1个输入值?

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[]"> <

我有一个类似于bellow的表单,表单中有一个以上的输入,其中有一个名称类似于bellow:

<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);