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);
}
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'){
$con = Connections::get_connection('default');
$statement = $con->prepare($sql);
+42 -10
View File
@@ -147,6 +147,34 @@ abstract class Entity {
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) {
$select_sql = "";
$criteria_sql = "";
@@ -157,6 +185,8 @@ abstract class Entity {
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]'";
@@ -175,9 +205,9 @@ abstract class Entity {
}
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 {
$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);
$objects = Array();
@@ -205,6 +235,8 @@ abstract class Entity {
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]'";
@@ -221,9 +253,9 @@ abstract class Entity {
$select_sql = rtrim($select_sql, ', ');
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 {
$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);
@@ -234,7 +266,7 @@ abstract class Entity {
$object->fill($value);
$objects[] = $object;
}
if(empty($objects)){
if (empty($objects)) {
return Array();
}
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()) {
$obj = new $foreign_object;
$obj = new $foreign_object;
$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)) {
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()) {
$obj = new $foreign_object;
$obj = new $foreign_object;
$limits_sql = '';
foreach ($pivot_limits as $key => $value) {
$limits_sql .= "$key $value ";
@@ -282,11 +314,11 @@ abstract class Entity {
$relations = DBInstance::query($sql, $this->connection_name);
$objects = Array();
if(empty($relations)){
if (empty($relations)) {
return Array();
}
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;
}
if (empty($objects)) {