<?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\Operations;
/**
* Trait Where
*
* @package PHPtricks\Orm\Operations
*/
trait Where
{
/**
* add where condition to sql statement
*
* @param string $field field name from table
* @param string $operator operator (= , <>, .. etc)
* @param mix $value the value
*
* @return object this class
*/
public function where($field, $operator, $value = false)
{
/**
* if $value is not set then set $operator to (=) and
* $value to $operator
*/
if ($value === false) {
$value = $operator;
$operator = "=";
}
if ( ! is_numeric($value)) {
$value = "'$value'";
}
$this->_query .= " $this->_where other.$field $operator $value";
$this->_where = "AND";
return $this;
}
/**
* between condition
*
* @param string $field table field name
* @param arrya $values ['from', 'to']
*
* @return object this class
*/
public function whereBetween($field, array $values = [])
{
if (count($values)) {
$this->_query
.= " $this->_where other.$field BETWEEN '$values[0]' and '$values[1]'";
$this->_where = "AND";
}
return $this;
}
/**
* Like whare
*
* @param string $field database field name
* @param string $value value
*
* @return object this class
*/
/**
* we can do that with where() methode
* $db->table('test')->where('name', 'LIKE', '%moha%');
*/
public function likeWhere($field, string $value)
{
$this->_query .= " $this->_where other.$field LIKE '%$value%'";
$this->_where = "AND";
return $this;
}
/**
* add OR condition to sql statement
*
* @param string $field field name from table
* @param string $operator operator (= , <>, .. etc)
* @param mix $value the value
*
* @return object this class
*/
public function orWhere($field, $operator, $value = false)
{
/**
* if $value is not set then set $operator to (=) and
* $value to $operator
*/
if ($value === false) {
$value = $operator;
$operator = "=";
}
$this->_query .= " OR other.$field $operator '$value'";
$this->_where = "AND";
return $this;
}
/**
* add in condition to query
*
* @param string $field field name from table
* @param array $value the values
*
* @return object this class
*/
public function in($field, array $values = [])
{
if (count($values)) {
$this->_query .= " $this->_where other.$field IN (".implode(",",
$values).")";
$this->_where = "AND";
}
return $this;
}
/**
* add not in condition to query
*
* @param string $field field name from table
* @param array $value the values
*
* @return object this class
*/
public function notIn($field, array $values = [])
{
if (count($values)) {
$this->_query .= " $this->_where other.$field NOT IN (".implode(",",
$values).")";
$this->_where = "AND";
}
return $this;
}
}
|