我以字符串形式接收帖子数据,如下所示:
data01,data02
data11,
data21,data22
...
dataxx,dataxx
数据可以长达10.000行,第1列是必填且唯一的,第2列是可选的。
因此要清理字符串(确保第1列是唯一的(仅在输入数据内-不能通过DB),格式等),并将其转换为数组:
[0:
[col1: data01,
col2: data02],
1:
[col1: data11,
col2: ""],
2:
[col1: val11,
col2: val12],
.....
9999:
[col1: dataxx,
col2: dataxx],
]
因此该阵列现在位于我的控制器上...
现在,我个人认为,最好是通过Stored Proc将该数组发送到mysql,并让SP进行批量插入工作(让我知道您是否有更好的方法,以及为什么)
问题:
还有一个附带的问题, 如果我这样做:
$validator = Validator::make($request->all(), [
'array.*.column1' => 'unique:items'
]);
它实际查询数据库的数据量是多少? (例如10000次?) 我只是觉得代码性能太昂贵了
答案 0 :(得分:0)
我对此的解决方案是
-
$rules = array("column 1" => "unique:KEY_NAME|required");
$validator = Validator::make($request->all(), $rules);
-
$data = array(
array('k1'=> 'v1', 'k2'=> 'v2'), all data
);
Eloquent::insert();
并将数据传递到其中。不要在数据库上查询。只需对最终数据和请求数据进行数组处理即可。还要添加一列,指出是否重复。这样可以节省很多时间。