|
@@ -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,10 +288,10 @@ 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";
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$relations = DBInstance::query($sql, $this->connection_name);
|
|
$relations = DBInstance::query($sql, $this->connection_name);
|
|
|
$ids = Array();
|
|
$ids = Array();
|
|
|
foreach ($relations as $relation) {
|
|
foreach ($relations as $relation) {
|
|
@@ -268,25 +300,25 @@ 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 ";
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$sql = "SELECT * FROM $pivot_table WHERE $local_in_pivot = $this->id $limits_sql";
|
|
$sql = "SELECT * FROM $pivot_table WHERE $local_in_pivot = $this->id $limits_sql";
|
|
|
$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)) {
|