@yellow_pus

Как продолжить цепь запросов в php?

На данный момент учу MySQL и заметил, что мы можем обращаться к "внутренним запросам", как в этом примере:
$mysqli->query("CREATE TABLE test(id INT, label TEXT)");

Насколько я знаю, такой запрос можно построить с помощью ООП. Я попробовал, но у меня ничего не получилось и я запутался, подскажите, где ошибка в моей "конструкции"
class A
{
    public function get()
    {
        $sql = "SELECT * FROM users WHERE id = 123";
        return $sql;
    }
}
class B extends A
{
    public function add($sql)
    {
        return $sql .= " AND name = 'Alex'";
    }
}
$a = new A();
$b = new B();

echo $b->get()->add();

Вот, на последней строчке я пробую добавить к прежнему запросу доп. условие
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
<?php
class A
{
	protected $sql = null;
	
	public function setSQL()
    {
        $this->sql = "SELECT * FROM users WHERE id = 123";
        return $this;
    }
	
	public function getSQL()
    {
        return $this->sql;
    }
}

class B extends A
{
    public function addSQL()
    {
        $this->sql .= " AND name = 'Alex'";
		
		return $this;
    }
}
$a = new A();
$b = new B();

echo $b->setSQL()->addSQL()->getSQL();


PHP class test
Ответ написан
Комментировать
@Kirill-Gorelov
С ума с IT
Может, конечно поздно, но вдруг

Смотри вкладку "пример из реальной жизни"
https://refactoring.guru/ru/design-patterns/builde...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Если отбросить всю не относящуюся к вопросу чепуху, типа каких-то "внутренних запросов"(?!), то ответ сводится цепочке вызовов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Depcon Екатеринбург
от 140 000 до 190 000 ₽
от 220 000 до 300 000 ₽
от 120 000 до 200 000 ₽
16 янв. 2022, в 14:18
500 руб./за проект
16 янв. 2022, в 14:13
700 руб./за проект
16 янв. 2022, в 13:53
4000 руб./за проект