PHP Classes

File: phptricksORM/DML/Insert.php

Recommend this page to a friend!
  Classes of mohammad anzawi   PHP PDO database class   phptricksORM/DML/Insert.php   Download  
File: phptricksORM/DML/Insert.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP PDO database class
Access databases using PDO
Author: By
Last change: New Version (5.0.0)
Date: 3 years ago
Size: 2,959 bytes
 

Contents

Class file image Download
<?php
/**
 * *
 * * please don't remove this comment block
 * *
 * * @author phptricks Team - Mohammad Anzawi
 * * @author_uri https://phptricks.org
 * * @uri https://github.com/anzawi/php-database-class
 * * @version 5.0.0
 * * @licence MIT -> https://opensource.org/licenses/MIT
 * * @package PHPtricks\Orm
 *
 */

namespace PHPtricks\Orm\DML;

trait
Insert
{

   
/**
     * get last inserted ID
     *
     * @return int
     */
   
public function lastInsertedId()
    {
        return
$this->_pdo->lastInsertId();
    }

   
/**
     * insert or update if exists
     *
     * @param $values
     * @param array $conditionColumn
     *
     * @return bool|mixed
     */
   
public function createOrUpdate($values, $conditionColumn = [])
    {
       
// check if we have condition for update
        // the condition must be ([column_name, value])
       
if (count($conditionColumn)) {
           
$column = $conditionColumn[0];
           
$value = $conditionColumn[1];
        } else
// if no condition so search by ID
       
{
           
$column = $this->_idColumn;
           
$value = isset($value[$this->_ColumnsId])
                ?
$value[$this->_ColumnsId] : null;
        }

       
// check if any records exists by condition
       
$exists = $this->findBy($column, $value)->first()->results();
       
// if exist so update the record's
       
if (count($exists)) {
            return
$this->where($column, $value)
                        ->
update($values);
        }

       
// insert new record
       
return $this->insert($values);
    }

   
/**
     * DB::insert()
     * insert into database tables
     *
     * @param string $table
     * @param array $values
     *
     * @return mixed
     */
   
public function insert(array $values = [])
    {
       
// check if $values set
       
if (count($values)) {
           
/**
             * @var $fields type array
             * store fields user want insert value for them
             */
           
$fields = array_keys($values);
           
/**
             * @var $value type string
             * store value for fields user want inserted
             */
           
$value = '';
           
/**
             * @var $x type int
             * counter
             */
           
$x = 1;
            foreach (
$values as $field) {
               
// add new value
               
$value .= "?";

                if (
$x < count($values)) {
                   
// add comma between values
                   
$value .= ", ";
                }
               
$x++;
            }
           
// generate sql statement
           
$sql = "INSERT INTO {$this->_table} (`".implode('`,`', $fields)
                   .
"`)";
           
$sql .= " VALUES({$value})";
           
// check if query is not have an error
           
if ( ! $this->query($sql, $values)->error()) {
                return
$this;
            }
        }

        return
false;
    }

}