New features, counting registers, fetch one

This commit is contained in:
Artur
2019-01-07 05:59:46 -02:00
parent 2b4c158035
commit 563c08e4b2
2 changed files with 51 additions and 14 deletions
+5
View File
@@ -19,6 +19,11 @@ class DBInstance {
return $con->query($sql, \PDO::FETCH_OBJ); return $con->query($sql, \PDO::FETCH_OBJ);
} }
public static function query_one($sql, $instance = 'default') {
$con = Connections::get_connection('default');
return $con->query($sql, \PDO::FETCH_OBJ)->fetch();
}
public static function query_prepare($sql, $arguments, $instance = 'default'){ public static function query_prepare($sql, $arguments, $instance = 'default'){
$con = Connections::get_connection('default'); $con = Connections::get_connection('default');
$statement = $con->prepare($sql); $statement = $con->prepare($sql);
+42 -10
View File
@@ -147,6 +147,34 @@ abstract class Entity {
return $objects; return $objects;
} }
public function count($criterias = Array(), $trashed = false) {
$criteria_sql = "";
foreach ($criterias as $key => $criteria) {
if ($criteria_sql != "") {
$criteria_sql .= " AND ";
} else {
$criteria_sql .= " WHERE ";
}
if (is_string($criteria[1])) {
$criteria_sql .= "$key $criteria[0] '$criteria[1]'";
} else {
$criteria_sql .= "$key $criteria[0] $criteria[1]";
}
}
if ($this->softdelete && !$trashed) {
$sql = "SELECT COUNT(*) FROM $this->table_name $criteria_sql AND deleted_at is null";
} else {
$sql = "SELECT COUNT(*) FROM $this->table_name $criteria_sql";
}
$results = DBInstance::query_one($sql, $this->connection_name);
return $results->count;
}
public function find_one($criterias = Array(), $select = Array('*'), $trashed = false) { public function find_one($criterias = Array(), $select = Array('*'), $trashed = false) {
$select_sql = ""; $select_sql = "";
$criteria_sql = ""; $criteria_sql = "";
@@ -157,6 +185,8 @@ abstract class Entity {
foreach ($criterias as $key => $criteria) { foreach ($criterias as $key => $criteria) {
if ($criteria_sql != "") { if ($criteria_sql != "") {
$criteria_sql .= " AND "; $criteria_sql .= " AND ";
} else {
$criteria_sql .= " WHERE ";
} }
if (is_string($criteria[1])) { if (is_string($criteria[1])) {
$criteria_sql .= "$key $criteria[0] '$criteria[1]'"; $criteria_sql .= "$key $criteria[0] '$criteria[1]'";
@@ -175,9 +205,9 @@ abstract class Entity {
} }
if ($this->softdelete && !$trashed) { if ($this->softdelete && !$trashed) {
$sql = "SELECT $select_sql FROM $this->table_name WHERE $criteria_sql AND deleted_at is null $limits_sql"; $sql = "SELECT $select_sql FROM $this->table_name $criteria_sql AND deleted_at is null $limits_sql";
} else { } else {
$sql = "SELECT $select_sql FROM $this->table_name WHERE $criteria_sql $limits_sql"; $sql = "SELECT $select_sql FROM $this->table_name $criteria_sql $limits_sql";
} }
$results = DBInstance::query($sql, $this->connection_name); $results = DBInstance::query($sql, $this->connection_name);
$objects = Array(); $objects = Array();
@@ -205,6 +235,8 @@ abstract class Entity {
foreach ($criterias as $key => $criteria) { foreach ($criterias as $key => $criteria) {
if ($criteria_sql != "") { if ($criteria_sql != "") {
$criteria_sql .= " AND "; $criteria_sql .= " AND ";
} else {
$criteria_sql .= " WHERE ";
} }
if (is_string($criteria[1])) { if (is_string($criteria[1])) {
$criteria_sql .= "$key $criteria[0] '$criteria[1]'"; $criteria_sql .= "$key $criteria[0] '$criteria[1]'";
@@ -221,9 +253,9 @@ abstract class Entity {
$select_sql = rtrim($select_sql, ', '); $select_sql = rtrim($select_sql, ', ');
if ($this->softdelete && !$trashed) { if ($this->softdelete && !$trashed) {
$sql = "SELECT $select_sql FROM $this->table_name WHERE $criteria_sql AND deleted_at is null $limits_sql"; $sql = "SELECT $select_sql FROM $this->table_name $criteria_sql AND deleted_at is null $limits_sql";
} else { } else {
$sql = "SELECT $select_sql FROM $this->table_name WHERE $criteria_sql $limits_sql"; $sql = "SELECT $select_sql FROM $this->table_name $criteria_sql $limits_sql";
} }
$results = DBInstance::query($sql, $this->connection_name); $results = DBInstance::query($sql, $this->connection_name);
@@ -234,7 +266,7 @@ abstract class Entity {
$object->fill($value); $object->fill($value);
$objects[] = $object; $objects[] = $object;
} }
if(empty($objects)){ if (empty($objects)) {
return Array(); return Array();
} }
return $objects; return $objects;
@@ -256,7 +288,7 @@ abstract class Entity {
} }
protected function belongs_to_many($foreign_object, $pivot_table, $local_in_pivot, $remote_in_pivot, $remote_filter = Array(), $remote_limit = Array()) { protected function belongs_to_many($foreign_object, $pivot_table, $local_in_pivot, $remote_in_pivot, $remote_filter = Array(), $remote_limit = Array()) {
$obj = new $foreign_object; $obj = new $foreign_object;
$sql = "SELECT $remote_in_pivot FROM $pivot_table WHERE $local_in_pivot = $this->id $limits_sql"; $sql = "SELECT $remote_in_pivot FROM $pivot_table WHERE $local_in_pivot = $this->id $limits_sql";
@@ -268,11 +300,11 @@ abstract class Entity {
if (empty($ids)) { if (empty($ids)) {
return Array(); return Array();
} }
return $obj->find_many( array_merge( Array( 'id' => Array('IN', $ids) ), $remote_filter), Array('*'), $remote_limit ); return $obj->find_many(array_merge(Array('id' => Array('IN', $ids)), $remote_filter), Array('*'), $remote_limit);
} }
protected function belongs_to_many_extended($foreign_object, $pivot_table, $local_in_pivot, $remote_in_pivot, $remote_filter = Array(), $pivot_limits = Array()) { protected function belongs_to_many_extended($foreign_object, $pivot_table, $local_in_pivot, $remote_in_pivot, $remote_filter = Array(), $pivot_limits = Array()) {
$obj = new $foreign_object; $obj = new $foreign_object;
$limits_sql = ''; $limits_sql = '';
foreach ($pivot_limits as $key => $value) { foreach ($pivot_limits as $key => $value) {
$limits_sql .= "$key $value "; $limits_sql .= "$key $value ";
@@ -282,11 +314,11 @@ abstract class Entity {
$relations = DBInstance::query($sql, $this->connection_name); $relations = DBInstance::query($sql, $this->connection_name);
$objects = Array(); $objects = Array();
if(empty($relations)){ if (empty($relations)) {
return Array(); return Array();
} }
foreach ($relations as $relation) { foreach ($relations as $relation) {
$relation->child_element = $obj->find_one(array_merge(Array("id" => Array("=", $relation->$remote_in_pivot), $remote_filter) )); $relation->child_element = $obj->find_one(array_merge(Array("id" => Array("=", $relation->$remote_in_pivot), $remote_filter)));
$objects[] = $relation; $objects[] = $relation;
} }
if (empty($objects)) { if (empty($objects)) {