tp5 批量insert数据

前提:做一个功能,前台一个form表单不知道提交多少条数据,每条信息不一样的是公司名称,其余数据一样。

思路:将重复的数据先获取出来,传给data数组。然后再将前台form表单过来的数据,公司所有名称拿出来。然后去掉其余的数组元素,count剩余的元素个数,然后foreach,在循环中组建data模型。 另外我这个有个需求是根据公司名称去查询会员表该公司的id ,所以在循环中多了数据库查询操作



$request=Request::instance();

$data = array();
$pub_id = $request->post('pub_id');
$page_id = $request->post('pages');
$datas = $request->post();
foreach ($datas as $key => $value) {
if($value == '')
    {
    unset($datas[$key]);
    }
}
unset($datas['pub_id']);unset($datas['pages']);
$nums = count($datas);
// myLog($datas,__LINE__);die;
$datas = array_values($datas);
// myLog($datas,__LINE__);die;
$userinfo = Db::name('userinfo');
$pub_company = Db::name('pub_company');
for($i = 1; $i <= $nums; $i++){
    $where['unit_full_name'] = $datas[$i-1];
    $user_id = $userinfo->where($where)->field('user_id')->find()['user_id'];
    if(empty($user_id))
    {
           $data[]  = [
               'pub_id' => $pub_id,          
               'pages' => $page_id,         
               'company_inf' => $datas[$i-1],               
               'add_time'=>date('y-m-d h:i:s',time())
           ] ;
    }
    else
    {
           $data[]  = [
               'pub_id' => $pub_id,          
               'pages' => $page_id,         
               'company_inf' => $datas[$i-1],     
               'userid' => $user_id,      
               'add_time'=>date('y-m-d h:i:s',time())
           ] ;

    }

 }

   $result   =  $pub_company-> insertAll($data);

你可能感兴趣的:(php)