Codeigniter генерирует ID приращения для зацикливания - PullRequest
0 голосов
/ 31 марта 2020

Я хочу импортировать Excel как json данные в Codeigniter с идентификатором генерации.

моя модель

    public function generateImpId() {
        $now = date('ymd');
        $check = "SELECT COUNT(*) as count FROM OP_IMP_15 WHERE DATE(OP_IMP_15.created_at) = DATE(NOW())";
        $querycheck = $this->db->query($check);
        $id = $querycheck->row()->count;

        return 'IMPDEMO'.$now.str_pad($id, 4, '0', STR_PAD_LEFT);
    }

мой контроллер

    //count row
    $lastRow = $objPHPExcel->setActiveSheetIndex($sheetnumber)->getHighestRow();       
    $countrow = $lastRow - 1;

    //start loop excel from 2nd row. Row 1 is title row
    for ($j=2; $j < $lastRow; $j++ ){
      $myArray[] = array(
        'site_id' => $objWorksheet->getCell('C'.$j)->getValue(),
        'site_name' => $objWorksheet->getCell('D'.$j)->getValue(),
        'id_site_doc'=> $objWorksheet->getCell('J'.$j)->getValue(),
        'id_project_doc' => $objWorksheet->getCell('K'.$j)->getValue(),
         //generate ID from model
        'implementation_id' => $this->M_MRCR_A->generateImpId(),
        ...

результат

{      "site_id":"AR001",
      "site_name":"Site AR 001",
      "id_site_doc":"5df1b4223269f818adab55af",
      "id_project_doc":"5da43895e619143bcff53ab1",
      "implementation_id":"IMPDEMO2003310001",
      "status":"implementation_created",
      "endstate":false,
      "created_by":"sgph_pm@mittapp.com",
      "counter_mr":"0",
      "tech_boq_ids":[


],
...
{      "site_id":"AR002",
      "site_name":"Site AR 002",
      "id_site_doc":"5df1b4223269f818adab55af",
      "id_project_doc":"5da43895e619143bcff53ab2",
      "implementation_id":"IMPDEMO2003310001",
      "status":"implementation_created",
      "endstate":false,
      "created_by":"sgph_pm@mittapp.com",
      "counter_mr":"0",
      "tech_boq_ids":[


],

мое ожидание

, чтобы сделать приращение "creation_id" в зависимости от того, сколько строки, в которые будут импортированы данные, и формат на основе пользовательского идентификатора, который я сделал (я не могу использовать uuid). например: у меня есть 3 строки для импорта, поэтому значение $ creation_id будет: IMPDEMO2003310001, IMPDEMO2003310002, IMPDEMO2003310003

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

Вы можете сделать это, получив идентификатор начала реализации в начале l oop и просто увеличивая его каждый раз (PHP может справиться с увеличением строки, подобной этой) ...

$implementationID = $this->M_MRCR_A->generateImpId();
//start loop excel from 2nd row. Row 1 is title row
for ($j=2; $j < $lastRow; $j++ ){
  $myArray[] = array(

     // ...

     //generate ID from model
    'implementation_id' => $implementationID++,

это должно дать вам такие значения, как ...

IMPDEMO2003310001
IMPDEMO2003310002
IMPDEMO2003310003
0 голосов
/ 31 марта 2020

Ну, так как у вас уже есть сгенерированное значение implementation_id, и я понятия не имею, что делает функция generateImpId(), вы можете вручную заменить каждый сгенерированный implementation_id на $j, который у вас есть:

//count row
$lastRow = $objPHPExcel->setActiveSheetIndex($sheetnumber)->getHighestRow();       
$countrow = $lastRow - 1;

//start loop excel from 2nd row. Row 1 is title row
for ($j=2; $j < $lastRow; $j++ ){
    $implementation_id = $this->M_MRCR_A->generateImpId();
    $implementation_id = substr($implementation_id, 0, -4) . str_pad($j-1, 4, '0', STR_PAD_LEFT); // since $j starts with 2
    $myArray[] = array(
    'site_id' => $objWorksheet->getCell('C'.$j)->getValue(),
    'site_name' => $objWorksheet->getCell('D'.$j)->getValue(),
    'id_site_doc'=> $objWorksheet->getCell('J'.$j)->getValue(),
    'id_project_doc' => $objWorksheet->getCell('K'.$j)->getValue(),
        //generate ID from model
    'implementation_id' => $implementation_id,
    ...
0 голосов
/ 31 марта 2020

Ты не должен пытаться делать все за один раз oop.

Возможно, вам следует использовать первую итерацию (для l oop) для создания массива, а затем вторую итерацию, чтобы заполнить это поле creation_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...