Last ID Method

The last_id method is part of Query Builder that returned postive integer value if an ID has generated automatically from MySQL Auto Increment feature.

Basic Usage

Here is the basic usage last_id method from $db property on SENE_Model class.

$this->db->lastId(): integer

Parameters

This method doenst need any parameter.

Example

On this example will show the process of 2 table, that first table will produce the last_id, and then the second table will requires the last_id result. Also, with the implementation in a controller class.

The 1st Model Class

In the first example for implementation last_id method in a model.

<?php
class D_Order_Model extends SENE_Model{
  var $tbl = 'd_order';
  var $tbl_as = 'dor';

  public function __construct(){
    	 parent::__construct();
  }
  ...
  public function set($di){
    $this->db->insert($ths->tbl,$di);
    return $this->db->lastId();
  }
  ...
}

The 2nd Model Class

In the second example create the insert method that requires from last_id result.

<?php
class D_Order_Detail_Model extends SENE_Model{
  var $tbl = 'd_order_detail';
  var $tbl_as = 'dod';

  public function __construct(){
    parent::__construct();
  }
  ...
  public function set($dis){
    return $this->db->insert_multi($ths->tbl,$dis);
  }
  ...
}

Controller Class

In this controller class will show how to use last_id method, from a model and then inserted new data into another model.

<?php
class Penjualan extends SENE_Controller{
  public function __construct(){
    parent::__construct();
    $this->load('d_order_model','dom');
    $this->load('d_order_detail_model','dodm');
  }
  ...
  public function submit(){
    $di = array();
    $di['buyer_name'] = "Aldy Iqbal";
    $di['grand_total'] = "100";
    $di['date_create'] = "NOW()";
    $last_id = $this->dom->set($di);
    if($last_id){
      $dis = array();
      $di = array();
      $di['d_order_id'] = $last_id;
      $di['product_name'] = "Hand Sanitizer";
      $di['price'] = "25";
      $di['qty'] = "2";
      $dis[] = $di;
      $di = array();
      $di['d_order_id'] = $last_id;
      $di['product_name'] = "Candy";
      $di['price'] = "10";
      $di['qty'] = "5";
      $dis[] = $di;
      $res = $this->dodm->setMass($dis);
      if($res){
        echo 'Success';
      }else{
        echo 'failed, ideally we have to rollback the first insert, but in this example has no rollback method';
      }
    }else{
      echo 'failed';
    }
  }
  ...
}