请问老师:为什么这样循环不能插入三条数据?我想把订单与消费券改成一对多的关系
来源:11-3 订单入库逻辑开发
![](http://img1.sycdn.imooc.com/user/5f5bd864000100dd11081111-100-100.jpg)
PanameraTurboS
2017-05-30
$chars = 'abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ23456789';
$coupons = [];
$couponsPass = [];
//根据购买数量产生消费券(比如是3)
for ($i=0; $i < 3; $i++) {
// print_r($i);
for($j=0; $j<10; $j++) {
$coupons[$i].= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
for($j=0; $j<5; $j++) {
$couponsPass[$i] .= random_int(0, 9);
}
//加密后存库
$coupons[$i] = md5($coupons[$i]);
$couponsPass[$i] = md5($couponsPass[$i]);
// print_r($data['coupons']);die();
// 获取订单数据(因为订单数据里有很多可以与消费券表共用的信息)
// print_r($order->toArray());die();
//消费券待入库数据
$couponsData = [
'coupons_number' => $coupons[$i],
'coupons_pass' => $couponsPass[$i],
'user_id' => $order['user_id'],
'goods_id' => $order['goods_id'],
'order_id' => $id,
'shop_id' => $order['shop'],
'bis_id' => $order['bis_id'],
];
//消费券入库
model('Coupons')->save($couponsData);
}
以上代码会提示未定义数组下标0,请老师帮忙看看。除了出错,还想知道这样能不能实现3条数据的录入,如果不能,改如何才能实现?
4回答
-
PanameraTurboS
提问者
2017-05-30
看了文档,批量插入用savaAll方法,已经解决。
112017-05-30 -
PanameraTurboS
提问者
2017-05-30
发现 model('Coupons')->saveAll($couponsData);能存多条,但是后边那条会包含前边那条的信息...所以这样也是错的
00 -
PanameraTurboS
提问者
2017-05-30
代码改成以下方法就实现了,原来还有saveAll方法...
$chars = 'abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ23456789';
$coupons= [];
$couponsPass = [];
$coupon = '';
$couponPass = '';
$couponsData = [];
$i = 0;
//根据购买数量产生消费券消费券
for ($i; $i < $count; $i++) {
// print_r($i);
for($j=0; $j<10; $j++) {
$coupon .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
for($j=0; $j<5; $j++) {
$couponPass .= random_int(0, 9);
}
$coupons[$i] = $coupon;
$couponsPass[$i] = $couponPass;
//加密后存库
$coupons[$i] = md5($coupons[$i]);
$couponsPass[$i] = md5($couponsPass[$i]);
// print_r($data['coupons']);die();
// 获取订单数据(因为订单数据里有很多可以与消费券表共用的信息)
// print_r($order->toArray());die();
//消费券待入库数据
$couponsData[$i] = [
'coupons_number' => $coupons[$i],
'coupons_pass' => $couponsPass[$i],
'user_id' => $order['user_id'],
'goods_id' => $order['goods_id'],
'order_id' => $id,
'shop_id' => $order['shop'],
'bis_id' => $order['bis_id'],
];
}
$res = model('Coupons')->saveAll($couponsData);00 -
PanameraTurboS
提问者
2017-05-30
代码改成一下写法,可以实现插入数据,没有报错,但是无论$count是什么数字,都只插入一条结果,请问为什么?循环的次数为什么不是$count的值?
$chars = 'abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ23456789';
$coupons= [];
$couponsPass = [];
$coupon = '';
$couponPass = '';
$i = 0;
//根据购买数量产生消费券消费券
for ($i; $i < $count; $i++) {
// print_r($i);
for($j=0; $j<10; $j++) {
$coupon .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
for($j=0; $j<5; $j++) {
$couponPass .= random_int(0, 9);
}
$coupons[$i] = $coupon;
$couponsPass[$i] = $couponPass;
//加密后存库
$coupons[$i] = md5($coupons[$i]);
$couponsPass[$i] = md5($couponsPass[$i]);
// print_r($data['coupons']);die();
// 获取订单数据(因为订单数据里有很多可以与消费券表共用的信息)
// print_r($order->toArray());die();
//消费券待入库数据
$couponsData = [
'coupons_number' => $coupons[$i],
'coupons_pass' => $couponsPass[$i],
'user_id' => $order['user_id'],
'goods_id' => $order['goods_id'],
'order_id' => $id,
'shop_id' => $order['shop'],
'bis_id' => $order['bis_id'],
];
//消费券入库
// print_r($coupons[$i]);
$res = model('Coupons')->save($couponsData);
}00
相似问题