База данных класса с фильтрами - PullRequest
0 голосов
/ 28 июня 2019

Я создаю свою собственную CMS, и я использовал для этого свой собственный класс Database. В некоторых средах есть способ сделать функцию для другой функции

$firstValues = $this-db->query('your query')->first();

Какой класс мне нужен для -> first () . Есть ли способ в php сделать это? Нужно ли использовать абстрактный класс? У кого-нибудь есть пример?

Если вам нужна дополнительная информация, пожалуйста, спросите меня! Спасибо за помощь!

Tom

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Вы должны передать $ this между методами. Вот несколько примеров:

Class Db {

   private $_query_result;

   public function query($query_string = '')
   {
         // make your query or smth


         // save for example array of results
         $this->_query_result = $your_query_result;
         return $this;
   }

   public function first() 
   {
         return array_shift($this->_query_result);
   }
}
0 голосов
/ 28 июня 2019

Какой класс мне нужен для -> first ().

Большинство сред предоставляют класс "Query Builder" для генерации и выполнения операторов SQL без написания SQL вручную.

Есть ли в php способ сделать это?

Да, просто выберите построитель запросов:

Нужно ли использовать абстрактный класс?

Нет

У кого-нибудь есть пример?

Подсветка базы данных (Laravel):

$userRow = Capsule::table('users')->where('votes', '>', 100)->get();

CakePHP:

$userRow = $connection->newQuery()
    ->from('users')
    ->select('*')
    ->where(['votes >' => 20])
    ->execute()
    ->fetch('assoc');

Под капотом метод first() просто выбирает первый ряд.

Пример PDO:

$statement = $pdo->prepare("SELECT * FROM users WHERE votes > :votes LIMIT 1");
$statement->execute(['votes' => 20]);
$userRow = $statement->fetch();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...