У меня есть таблица в моей базе данных.Структура таблицы выглядит следующим образом:
Мне нужно вставить данные в эту таблицу в виде пакета, но избегать дублирования ввода (здесь дубликат означает то же самое комбинация 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);
}
Обновленная функция будет работать.Но я ищу простое решение