Вход

Просмотр полной версии : $GLOBALS['TYPO3_DB']->sql_query в TYPO3 9


Ивано++
08.07.2019, 15:00
$res = $GLOBALS['TYPO3_DB']->sql_query("
SELECT * FROM my_table
");
$num = $GLOBALS['TYPO3_DB']->sql_num_rows ($res);
if ($num > 0){
while ( ($ardamp = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) ) {


В старых версиях TYPO3 была возможность делать произвольные запросы через $GLOBALS['TYPO3_DB']->sql_query(".

Как это сделать в TYPO3 9?

Николай Сипко
09.07.2019, 12:52
https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/Migration/Index.html

Ивано++
09.07.2019, 13:03
https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/Migration/Index.html

Живой пример приведите.

Николай Сипко
09.07.2019, 13:14
А это разве не "живые примеры":
https://translate.google.ru/translate?sl=auto&tl=ru&u=https%3A%2F%2Fdocs.typo3.org%2Fm%2Ftypo3%2Frefer ence-coreapi%2Fmaster%2Fen-us%2FApiOverview%2FDatabase%2FMigration%2FIndex.ht ml

Ивано++
13.07.2019, 12:56
Ссылок масса, но я не нашел как сделать именно прямой произвольный запрос к БД в новой тайпе.

$res = $GLOBALS['TYPO3_DB']->sql_query("
SELECT * FROM my_table
");
$num = $GLOBALS['TYPO3_DB']->sql_num_rows ($res);
if ($num > 0){
while ( ($ardamp = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) ) {

Как сделать такой запрос в новой тайме - нужен пример в комментариях, а не ссылки.

Николай Сипко
13.07.2019, 13:25
Ссылок масса, но я не нашел как сделать именно прямой произвольный запрос к БД в новой тайпе.

"TYPO3 начиная с версии 8 LTS использует Doctrine DBAL для работы с базой данных. Таким образом обеспечивается поддержка не только MySQL, но и Oracle, Microsoft SQL Server и PostgreSQL"
http://www.ttlab.ru/about-typo3-cms.html

"doctrine-dbal была введена в TYPO3 CMS версии 8 и заменяет старый API, основанный на $GLOBALS['TYPO3_DB'] . Авторам расширений рекомендуется переключиться с TYPO3_DB на новый API.

Отдельная глава помогает с типичными вопросами миграции. При построении абстракции базы данных в doctrine-dbal старые и необязательные расширения dbal и adodb устарели"
https://translate.google.ru/translate?sl=auto&tl=ru&u=https%3A%2F%2Fdocs.typo3.org%2Fm%2Ftypo3%2Frefer ence-coreapi%2Fmaster%2Fen-us%2FApiOverview%2FDatabase%2FIntroduction%2FIndex .html

"Как использовать DBAL Doctrine" (как сделать именно прямой произвольный запрос)
https://symfony.ru/doc/current/doctrine/dbal.html

Приятной работы!

Manas
21.07.2019, 19:18
Начиная с 9-й ветки TYPO3 этог всё делается через QueryBuilder
https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/QueryBuilder/Index.html
https://gist.github.com/einpraegsam/5214a4eb3b9ef6b932fbf92d43400986
прямых запросов больше нет.

Николай Сипко
22.07.2019, 12:21
"Библиотека Doctrine предназначена для работы со всеми крупными базами данных с помощью унифицированного интерфейса программирования. Этот интерфейс программирования реализован на двух уровнях.

На нижнем уровне Doctrine предоставляет единый механизм для построения SQL-запросов к любой поддерживаемой реляционной БД и управления схемой БД. Этот механизм реализован в компоненте Database Abstraction Layer (DBAL, абстрактный уровень базы данных).

На высшем уровне компонент ORM (объектно-реляционный проектор) обеспечивает возможность запрашивать и управлять данными БД объектно-ориентированным способом, устанавливая соответствие между таблицами и PHP-классами. Этот компонент также предоставляет свой собственный язык запросов, DQL, позволяющий строить запросы в объектно-ориентированном стиле.

Как правило, используется API, предоставляемый компонентом ORM. В то же время вы вполне можете работать с компонентом нижнего уровня DBAL, если находите его более подходящим для ваших проектов"

https://olegkrivtsov.github.io/using-zend-framework-3-book/html/ru/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D 0%B8%D0%B5_%D0%93__%D0%92%D0%B2%D0%B5%D0%B4%D0%B5% D0%BD%D0%B8%D0%B5_%D0%B2_Doctrine/Doctrine_%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0% BC%D1%8B_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B 5%D0%BD%D0%B8%D1%8F_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC %D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85.html

Ивано++
22.07.2019, 13:37
Начиная с 9-й ветки TYPO3 этог всё делается через QueryBuilder
https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/QueryBuilder/Index.html
https://gist.github.com/einpraegsam/5214a4eb3b9ef6b932fbf92d43400986
прямых запросов больше нет.

Как получить список колонок в таблице?
Как составить более сложный запрос.

Не может быть что бы не было возможности делать произвольные запросы к БД. Doctrine это позволяет делать насклько знаю. Но как сделать это в TYPO3 9 не могу найти примера.

Раньше можно было сделать:

$res = $GLOBALS['TYPO3_DB']->sql_query(" SELECT * FROM my_table ");
while ( ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) ) { }

Николай Сипко
22.07.2019, 14:06
https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/Migration/Index.html

Ивано++
22.07.2019, 14:09
Мне не нужна ссылка. Так нет такого примера с sql_query
Приведите пример как сделать такой запрос в новой тайпе без TYPO3_DB.
$res = $GLOBALS['TYPO3_DB']->sql_query(" SELECT * FROM my_table ");
while ( ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) ) { }

Николай Сипко
22.07.2019, 14:16
Мне не нужна ссылка. Так нет такого примера с sql_query
Приведите пример как сделать такой запрос в новой тайпе без TYPO3_DB.
$res = $GLOBALS['TYPO3_DB']->sql_query(" SELECT * FROM my_table ");
while ( ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) ) { }

Не желаю

Ивано++
22.07.2019, 15:59
Не желаешь что?
Зачем пишешь тогда если не имеешь ответа - вопрос вполне конкретный?

Николай Сипко
22.07.2019, 16:08
Не желаешь что?
Зачем пишешь тогда если не имеешь ответа - вопрос вполне конкретный?

Не желаю далее с Вами общаться

Ивано++
22.07.2019, 16:11
Ну не желай.
Ответ на конкретно поставленный вопрос как - где?
Обычно если его нет - люди не пишут. А от вас все сообщения в этой теме это спам.
Вот вы привели пример - https://symfony.ru/doc/current/doctrine/dbal.html
А как это сделать в TYPO3?

Ивано++
06.08.2019, 22:56
Единственный вариант который нашел как сделать в 9.

$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
'dbname' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['dbname'],
'user' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['user'],
'password' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['password'],
'host' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['host'],
'driver' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['driver'],
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($conne ctionParams, $config);
$sql = "SELECT * FROM pages";
$stmt = $conn->query($sql); // Simple, but has several drawbacks
while ($row = $stmt->fetch()) {
echo $row['title'];
}

Ура!

Николай Сипко
07.08.2019, 01:28
Единственный вариант который нашел как сделать в 9.

$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
'dbname' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['dbname'],
'user' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['user'],
'password' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['password'],
'host' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['host'],
'driver' => $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['driver'],
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($conne ctionParams, $config);
$sql = "SELECT * FROM pages";
$stmt = $conn->query($sql); // Simple, but has several drawbacks
while ($row = $stmt->fetch()) {
echo $row['title'];
}

Ура!

А в "Корзина в TYPO3" http://forum.typo3.ru/showthread.php?t=12995 еще не поискали?

https://docs.typo3.org/c/typo3/cms-recycler/master/en-us/Configuration/Index.html

Ивано++ Senior Member, меня всегда удивляло, почему Вы предпочитаете задавать на форуме элементарные вопросы и ждать, чтобы кто-то услужливо Вам ответил, а не пользоваться документацией TYPO3 и информацией в интернете?