Как получить лишь array?

делаю запрос в базу данных для получения по е-майл

$user = $this->db->get('products', ['email','=', $email]);

Через var_Dump получаю

object(Database)#2 (5) { ["pdo":"Database":private]=> object(PDO)#3 (0) { } ["query":"Database":private]=> object(PDOStatement)#5 (1) { ["queryString"]=> string(38) "SELECT * FROM products WHERE email = ?" } ["error":"Database":private]=> bool(false) ["results":"Database":private]=> array(1) { [0]=> object(stdClass)#6 (4) { ["id"]=> string(2) "16" ["email"]=> string(12) "[email protected]" ["name"]=> string(4) "Danu" ["password"]=> string(60) "$2y$10$plpesxMMJyty6PGqWWkQJefV.tSWAUD.r9rMq6/MYIFUwQfj1jWeq" } } ["count":"Database":private]=> int(1) }

Как можно получить лишь array с данными без private, error, select и.т.п


Ответы (1 шт):

Автор решения: Ипатьев

Окей, я так понимаю что тебя отговорить не получится. Тогда показываю как правильно делать функцию get()

public function getRow($sql, $params = [], $mode = PDO::FETCH_OBJ){
    return $this->query($sql, $params)->fetch($mode);
}
public function getArr($sql, $params = [], $mode = PDO::FETCH_OBJ){
    return $this->query($sql, $params)->fetchAll($mode);
}
public function getOne($sql, $params = []){
    return $this->query($sql, $params)->fetchColumn();
}

Соответственно, вызов переписать так

$user = $this->db->getRow('SELECT * FROM products WHERE email =?', [$email]);
  • Во-первых, надо выкинуть на помойку твой доморощенный квери билдер, который экономит тебе ажно ЦЕЛЫХ ТРИ СЛОВА в SQL запросе, но зато превращает великолепный язык SQL в жалкого уродца, отрывая ему ноги, руки, голову и остальные выступающие части.
  • Во-вторых, нужны ТРИ функции, а не одна, по типам возвращаемых результатов
  • В-третьих, надо бережно относиться к тому БОГАТОМУ функционалу, который прдеоставляет ПДО, и не отрывать ему ноги тоже, а дать возможность использовать его в своей поделке.
→ Ссылка