php - 如果特定列中没有重复项,则在 codeigniter 中插入批处理
问题描述
我的数据库中有一个表。表结构如下
我需要将数据作为批处理插入到该表中,但要避免重复输入(这里重复意味着intCampaignID 和 intMobileNumber 的相同组合)。
以下是我的模型中的插入功能
function addToCampaign($data){
$voiceengine = $this->load->database('voiceengine', TRUE);
$scheduleData = array();
$mobiles = explode(',', $data['destinations']);
$mobilesData = array();
foreach($mobiles as $mobile){
if (trim(strlen($mobile)) > 10)
$mobile = substr(trim($mobile), -10);
else
$mobile = trim($mobile);
if(!in_array($mobile, $mobilesData)){
array_push($mobilesData, $mobile);
}
}
foreach($mobilesData as $mobile){
$campaignData = array(
'intCampaignID' => $data['campaign'],
'intMobileNumber' => $mobile);
array_push($scheduleData, $campaignData);
}
$voiceengine->insert_batch('Voice.CampaignNumbers', $scheduleData);
}
我不知道该怎么做。我搜索了一个解决方案,但所有解决方案都在避免基于键的重复。但这些字段不是关键字段,我无权更改结构。有人请帮我这样做
更新
我已经在模型中更新了我的函数
function addToCampaign($data){
$voiceengine = $this->load->database('voiceengine', TRUE);
$scheduleData = array();
$mobiles = explode(',', $data['destinations']);
$mobilesData = array();
foreach($mobiles as $mobile){
if (trim(strlen($mobile)) > 10)
$mobile = substr(trim($mobile), -10);
else
$mobile = trim($mobile);
if(!in_array($mobile, $mobilesData)){
array_push($mobilesData, $mobile);
}
}
foreach($mobilesData as $mobile){
$voiceengine->where('intCampaignID', $data['campaign']);
$voiceengine->where('intMobileNumber', $mobile);
$count = $voiceengine->count_all_results('Voice.CampaignNumbers'); // need a simple method
if($count <= 0) {
$campaignData = array(
'intCampaignID' => $data['campaign'],
'intMobileNumber' => $mobile);
array_push($scheduleData, $campaignData);
}
}
$voiceengine->insert_batch('Voice.CampaignNumbers', $scheduleData);
}
更新后的功能将起作用。但我正在寻找一个简单的解决方案
解决方案
在插入之前删除重复的值:
$scheduleData = array_map("unserialize", array_unique(array_map("serialize", $scheduleData)));
然后运行insert_batch
函数
推荐阅读
- javascript - 如何在一段时间后自动隐藏“您已订阅我们的时事通讯”的消息?
- google-apps-script - 如何测试私人 Google 表格添加
- php - XAMPP 目前是否在 2021 年支持 Curl?
- java - LinkedList 与 ArrayList 的时间性能
- python - 如何使用 scikit-image 和/或 PIL 将 ProPhoto RGB 颜色空间转换为 RGB?
- excel - 找到第一个最低值
- sql - 查询时在PostgreSQL中将小数位向右移动
- javascript - 按比例缩放 Img 以填充没有 CSS 覆盖的整个容器 (javascript/React)
- algorithm - Ehat 是二项式系数的递归和动态规划方法的空间复杂度吗?
- forms - jQuery vs Vuejs 表单管理最佳实践