Обращение к базе данных

InstantCMS 2.X
#16 9 февраля 2023 в 15:50

slugs

KoRn

...🙄

#17 9 февраля 2023 в 16:35

Ребята, у меня выбирается строка случайным образом по id. Затем в $result я получаю значение конкретного поля в этой строке. Подскажите пожалуйста как изменить запрос/запросы чтобы также по случайно выбранному id строки получить несколько разных полей этой строки? Спасибо.

Юран
  1. <?php $random = rand(1,328); ?>
  2.  
  3. <?php if ($device_type == 'desktop') {
  4. # Подключаем модель компонента. Для запросов в БД неважно какого поэтому берем модель компонента content
  5. $model = cmsCore::getModel('content');
  6. #Составляем запрос в БД
  7. $model->selectOnly('i.id, i.title, i.slug, i.user_id'); // укажем список полей, которых надо получить, через префикс i.
  8. $result = $model->getItemById('con_person', $random); // получить массив
  9. echo $result['title']; //выводить заголовок
  10. echo $result['user_id']; //выводить ID юзера
  11. ?>
#18 9 февраля 2023 в 20:47

Ребята, у меня выбирается строка случайным образом по id. Затем в $result я получаю значение конкретного поля в этой строке. Подскажите пожалуйста как изменить запрос/запросы чтобы также по случайно выбранному id строки получить несколько разных полей этой строки? Спасибо.

Юран
  1. <?php $random = rand(1,328); ?>
  2.  
  3. <?php if ($device_type == 'desktop') {
  4. # Подключаем модель компонента. Для запросов в БД неважно какого поэтому берем модель компонента content
  5. $model = cmsCore::getModel('content');
  6. #Составляем запрос в БД
  7. $model->selectOnly('i.id, i.title, i.slug, i.user_id'); // укажем список полей, которых надо получить, через префикс i.
  8. $result = $model->getItemById('con_person', $random); // получить массив
  9. echo $result['title']; //выводить заголовок
  10. echo $result['user_id']; //выводить ID юзера
  11. ?>
My-InstantCMS.Ru

Çok güzel,+ в карму))

#19 10 февраля 2023 в 10:31

Ребята, у меня выбирается строка случайным образом по id. Затем в $result я получаю значение конкретного поля в этой строке. Подскажите пожалуйста как изменить запрос/запросы чтобы также по случайно выбранному id строки получить несколько разных полей этой строки? Спасибо.

Юран
  1. <?php $random = rand(1,328); ?>
  2.  
  3. <?php if ($device_type == 'desktop') {
  4. # Подключаем модель компонента. Для запросов в БД неважно какого поэтому берем модель компонента content
  5. $model = cmsCore::getModel('content');
  6. #Составляем запрос в БД
  7. $model->selectOnly('i.id, i.title, i.slug, i.user_id'); // укажем список полей, которых надо получить, через префикс i.
  8. $result = $model->getItemById('con_person', $random); // получить массив
  9. echo $result['title']; //выводить заголовок
  10. echo $result['user_id']; //выводить ID юзера
  11. ?>
My-InstantCMS.Ru

Парвиз спасибо огромное, все работает, вывел нужные данные. Нубский вопрос, префикс i что означает? Если есть возможность какую нибудь ссылку мне, чтобы немного вникнуть в запросы.

#20 10 февраля 2023 в 11:21

 Юран, правильно оказалось не префикс а алиас.

i. это короткое название таблицы, по умолчанию инстант добавляет к всем запросам алиас i.

Пример использования:

Допустим нам надо получить в одном запросе заголовок новости и заголовок поста у пользователя с ID = 1

  1. $model->selectOnly('i.id, n.title as news_title, p.title as post_title'); //обратите внимание что заголовок новости беру с алиасом n.
  2. // а заголовок постов беру с p.
  3. // так же дописал "as news_title" что бы переименовать имя поля, так как у постов тоже называется title
  4. $model->joinLeft('con_news', 'n', 'n.user_id=i.id'); // соединяю запрос с таблицей типа контента новости
  5. // первым идет называние таблицы, второй алиас, т.е. буква n что бы в выборке можно было обратиться как n.title, потом условия т.е. user_id=ID из текущего запроса
  6. $model->joinLeft('con_posts', 'n', 'n.user_id=i.id'); //так же соединяюсь с постами
  7. $user = $model->filterEqual('i.id', 1)->get('cms_users'); // берем из таблицы users с условием id=1
  8.  
  9. echo $user['news_title']; // заголовок новости
  10. echo $user['post_title']; // заголовок новости

Не знаю понятно ли объяснил

#21 10 февраля 2023 в 13:53

 Юран, правильно оказалось не префикс а алиас.

i. это короткое название таблицы, по умолчанию инстант добавляет к всем запросам алиас i.

Пример использования:

Допустим нам надо получить в одном запросе заголовок новости и заголовок поста у пользователя с ID = 1

  1. $model->selectOnly('i.id, n.title as news_title, p.title as post_title'); //обратите внимание что заголовок новости беру с алиасом n.
  2. // а заголовок постов беру с p.
  3. // так же дописал "as news_title" что бы переименовать имя поля, так как у постов тоже называется title
  4. $model->joinLeft('con_news', 'n', 'n.user_id=i.id'); // соединяю запрос с таблицей типа контента новости
  5. // первым идет называние таблицы, второй алиас, т.е. буква n что бы в выборке можно было обратиться как n.title, потом условия т.е. user_id=ID из текущего запроса
  6. $model->joinLeft('con_posts', 'n', 'n.user_id=i.id'); //так же соединяюсь с постами
  7. $user = $model->filterEqual('i.id', 1)->get('cms_users'); // берем из таблицы users с условием id=1
  8.  
  9. echo $user['news_title']; // заголовок новости
  10. echo $user['post_title']; // заголовок новости

Не знаю понятно ли объяснил

My-InstantCMS.Ru

Если честно — темный лес:)) Но все равно спасибо, попробую разобраться… В документации по Instantcms смотрел… там что то нету такого… я так понял там свои встроенные в cms методы и примеры запросов приводятся.  Чувствую без теоретической подготовки методом тыка или гугления тут так просто не разобраться:)

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.