@fman2

Laravel без фасадов. Как использовать?

Пишу проект на Laravel. После Symfony и Yii2, мне не по себе от фасадов в Laravel, я как-то привык использовать внедрение зависимостей. Ну да ладно.

Вот к примеру, я хочу вставить запись в бд, без использования их AR и DB::table(), использую для этих целей Illuminate\Database\Query\Builder
У меня есть простая таблица для теста из одного поля: id int

И вот этот код:
$this->builder
            ->from("test")
            ->insert([
                'id' => 123
            ]);

Не работает. А при использовании фасада все окей. Почему?
Ошибка следующая:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"test" ("id") values (?)' a
t line 1

Явно создается кривой SQL запрос, но из-за чего? Неужели все так сильно завязано на фасады?
  • Вопрос задан
  • 657 просмотров
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
По итогу уточнений в каментах выяснилось, что билдер получался из контейнера не так. Надо:
use Illuminate\Database\ConnectionInterface;

public function __construct(ConnectionInterface $conn)
{
    $conn->query()->from(...)->insert();
    // или $conn->table(...)->insert();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы