- Added property hasSequence to class DB_Model.

This property is used to indicate if the represented table has a primary
  key that uses a sequence (true, otherwise false. Default is true).
- Method insert of DB_Model now checks the property hasSequence.
  If it is true it uses the method insert_id() to return the primary key
  of the row just inserted.
  For any other values the method returns the primary key inserted coping
  it directly from the parameters.
- Set the property hasSequence to false in the constructor of model Prestudentstatus
This commit is contained in:
paolo
2016-05-24 16:56:14 +02:00
parent e76e1af15c
commit 70fba4d267
2 changed files with 21 additions and 9 deletions
+18 -7
View File
@@ -4,6 +4,8 @@ class DB_Model extends FHC_Model
{
protected $dbTable; // Name of the DB-Table for CI-Insert, -Update, ...
protected $pk; // Name of the PrimaryKey for DB-Update, Load, ...
protected $hasSequence; // False if this table has a composite primary key that is not using a sequence
// True if this table has a primary key that uses a sequence
protected $acl; // Name of the PrimaryKey for DB-Update, Load, ...
function __construct($dbTable = null, $pk = null)
@@ -11,6 +13,7 @@ class DB_Model extends FHC_Model
parent::__construct();
$this->dbTable = $dbTable;
$this->pk = $pk;
$this->hasSequence = true;
$this->load->database();
$this->acl = $this->config->item('fhc_acl');
}
@@ -34,19 +37,27 @@ class DB_Model extends FHC_Model
// DB-INSERT
if ($this->db->insert($this->dbTable, $data))
{
// If the table has a primary key that uses a sequence
if ($this->hasSequence === true)
{
return $this->_success($this->db->insert_id());
}
// Avoid to use method insert_id() from CI because it forces to have a sequence
// and doesn't return the primary key when it's composed by more columns
$primaryKeysArray = array();
foreach ($this->pk as $key => $value)
else
{
if(isset($data[$value]))
$primaryKeysArray = array();
foreach ($this->pk as $key => $value)
{
$primaryKeysArray[$value] = $data[$value];
if (isset($data[$value]))
{
$primaryKeysArray[$value] = $data[$value];
}
}
return $this->_success($primaryKeysArray);
}
return $this->_success($primaryKeysArray);
}
else
return $this->_error($this->db->error(), FHC_DB_ERROR);
@@ -1,7 +1,7 @@
<?php
class Prestudentstatus_model extends DB_Model
{
/**
* Constructor
*/
@@ -10,5 +10,6 @@ class Prestudentstatus_model extends DB_Model
parent::__construct();
$this->dbTable = 'public.tbl_prestudentstatus';
$this->pk = array('ausbildungssemester', 'studiensemester_kurzbz', 'status_kurzbz', 'prestudent_id');
$this->hasSequence = false;
}
}
}