<?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 Delete 
 * 
 * @package PHPtricks\Orm\DML 
 */ 
trait Delete 
{ 
 
    /** 
     * delete from table 
     * 
     * @return bool 
     */ 
    public function delete() 
    { 
        $results = (array) $this->_results; 
 
        // check if its empty 
        if ( ! count($results)) { 
            // try to call select() method 
            try { 
                $results = (array) $this->select()->results(); 
                if (count($results) == 1) { 
                    $results = $results[0]; 
                } 
            } catch (\Exception $e) { 
                return false; 
            } 
        } 
 
        if ($this->count() == 1) { 
            return $this->remove($results); 
        } 
 
        for ($i = 0; $this->count() > $i; $i++) { 
            $this->remove($results[$i]); 
        } 
 
        return true; 
    } 
 
    /** 
     * @param $data 
     * 
     * @return mixed 
     */ 
    private function remove($data) 
    { 
        $this->_where = "WHERE"; 
        $x            = 1; 
 
        foreach ($data as $i => $row) { 
            if ( ! is_numeric($row)) { 
                $this->_where .= " {$i} = '{$row}'"; 
            } else { 
                $this->_where .= " {$i} = {$row}"; 
            } 
            // add comma between values 
            if ($x < count((array) $data)) { 
                $this->_where .= " AND"; 
            } 
            $x++; 
        } 
 
        $sql = "DELETE FROM $this->_table ".$this->_where; 
 
        return $this->query($sql); 
    } 
 
}
 
 |