123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?php
-
- namespace Luticate\Utils;
-
- abstract class LuDataAccess {
-
- public function __construct()
- {
- }
-
- public static function __callStatic($name, $arguments)
- {
- $class = get_called_class();
- $me = new $class();
- return call_user_func_array(array($me, '_' . $name), $arguments);
- }
-
- /**
- * @var LuModel
- */
- protected $model = null;
-
- /**
- * @param $page int
- * @param $perPage int
- * @param $column string
- * @param $order string
- * @param $query string
- * @return LuModel[]
- */
- protected function search_($page, $perPage, $column, $order, $query)
- {
- return $this->model;
- }
-
- /**
- * @param $data LuModel[]
- * @return LuDbo[]
- */
- protected static function arrayToDbo($data)
- {
- $tab = [];
- foreach ($data as $q) {
- if (!is_null($q)) {
- $tab[] = $q->toDbo();
- }
- }
- return $tab;
- }
-
- /**
- * @param $page int
- * @param $perPage int
- * @param $column string
- * @param $order string
- * @param $query string
- * @return LuDbo[]
- */
- public function search($page, $perPage, $column, $order, $query = null)
- {
- if (is_null($query))
- $data = $this->model;
- else
- $data = $this->search_($page, $perPage, $column, $order, $query);
-
- $data = $data->orderBy($column, $order)->take($perPage)->offset($page * $perPage)->get();
-
- $tab = $this->arrayToDbo($data);
- return $tab;
- }
-
- /**
- * @param $id int
- * @return LuModel
- */
- protected function _getModelById($id)
- {
- return $this->model->where('id', '=', $id)->first();
- }
-
- /**
- * @param $id int
- * @return LuDbo|null
- */
- public function _getById($id)
- {
- $data = $this->_getModelById($id);
- if (is_null($data))
- return null;
- return $data->toDbo();
- }
-
- /**
- * @param $id int
- */
- public function deleteById($id)
- {
- $data = $this->_getModelById($id);
- if (is_null($data))
- return;
- $data->delete();
- }
-
- /**
- * @param $data LuDbo
- * @return int
- */
- public function _addId($data)
- {
- $data = $this->model->fromDBO($data);
- $data->save();
- return $data->id;
- }
-
- /**
- * @param $data LuDbo
- */
- public function _add($data)
- {
- $data = $this->model->fromDBO($data);
- $data->save();
- }
-
- /**
- * @param $id int
- * @param $data LuDbo
- * @return LuDbo|null
- */
- public function _editById($id, $data)
- {
- return $this->model->fromDBO($data, $this->_getModelById($id))->save();
- }
-
- /**
- * @param $predicates array
- * @param $orders array
- * @param int $page
- * @param int $perPage
- * @return array
- */
- public function _getMultiple($predicates, $orders, $page = 0, $perPage = PHP_INT_MAX)
- {
- $model = $this->model;
- foreach($predicates as $predicate)
- {
- $model = $model->where($predicate[0], $predicate[1], $predicate[2]);
- }
- $count = $model->count();
- foreach($orders as $order)
- {
- $model = $model->orderBy($order[0], $order[1]);
- }
- $data = $model->take($perPage)->offset($page * $perPage)->get();
- $dbo = self::arrayToDbo($data);
-
- return new LuMultipleDbo($count, $dbo);
- }
- }
|