Я хочу обновить таблицу сообщений по идентификатору. Но когда я попробовал, эта доктрина обновляет все строки в таблице сообщений, а не только выбранный идентификатор.
Note that queryBuilder coming from DriverManager not from EntityManager
public function store(RequestInterface $request)
{
$db = new Config();
$db->queryBuilder()
->update("posts")
->set("title", "?")
->set("content", "?")
->where("id", "?")
->setParameter(0, $request->get("title"))
->setParameter(1, $request->get("content"))
->setParameter(2, $request->get("id"));
return redirect()->route("posts.index");
}
класс конфигурации
class Config
{
private $info;
public function __construct()
{
$this->info = [
'dbname' => 'cms',
'user' => 'root',
'password' => '123456',
'host' => 'localhost',
'driver' => 'pdo_mysql',
];
}
public function conn()
{
return DriverManager::getConnection($this->info, $this->config());
}
private function config()
{
return new Configuration();
}
public function queryBuilder()
{
return $this->conn()->createQueryBuilder();
}
что-то не так с приведенными выше кодами? если есть, как я могу это исправить?
@Cerad Я отредактировал свой вопрос. это исходит из класса конфигурации
По-прежнему не видно никаких доказательств того, что вы действительно выполняете запрос.
Я нашел. -> где ("id", "?") должно быть -> where ("id =?")






Всегда сложно помочь, когда опубликованный код не соответствует вашему фактическому коду. Метод $ qb-> queryBuider () не существует, если вы не изменили объект подключения DBAL. Вы также не выполняете запрос. Вы можете попробовать проверить сгенерированный sql, но я подозреваю, что у вас происходит что-то совершенно другое.