ID добавленного ресурса

Прошу помочь. Вопрос следующий: как после добавления ресурса modx или записи в пользовательскую таблицу данных узнать id добавленной записи/ресурса?
Igor
23 ноября 2014, 20:17
modx.pro
4 309
0

Комментарии: 16

Александр Москвин
23 ноября 2014, 23:44
0
В шаблоне или чанке [[*id]]
в сниппете через api $modx->resource->get('id');
    Igor
    24 ноября 2014, 00:05
    0
    А если это пользовательская таблица?
    Код примерно следующий:
    $dataobject = $modx->newObject($classname);
    $dataobject->set($field, $value);
    $dataobject->save();
    В таблице автоинкремент поля id
      Александр Москвин
      24 ноября 2014, 01:02
      0
      Нет, если это пользовательская таблица это с этим сложнее…

      Потому что нужно для неё создать схему xml и тогда данные таблицы попадут в объекты и потом их можно выбирать.
      Через Ж. модх делает работу с пользовательскими таблицами одно скажу…

      Покопайся в сторону тему MIGX DB.
        Василий Наумкин
        24 ноября 2014, 05:22
        0
        Настолько через Ж, что лично я вообще не могу пользоваться чем-то кроме xPDO.
        Александр Москвин
        24 ноября 2014, 01:06
        +1
        ilyaut.ru/xpdo/add-custom-objects/ — посмотри на этом сайте хорошие инструкции для работы с пользовательскими таблицами.
          Сергей Шлоков
          24 ноября 2014, 08:26
          1
          +2
          Существует функция xpdo::lastInsertId();, которую можно вызывать так
          $modx->lastInsertId();
          Но в твоем случае достаточно так
          ...
          $dataobject->save();
          //1. Вариант
          //определяем первичный ключ объекта
          $pk= $dataobject->getPrimaryKey();
          $id = $dataobject->get($pk);
          //2. Вариант
          //Можно непосредственно первичный ключ указать, например, "id"
          $id = $dataobject->get('id');
        Наумов Алексей
        24 ноября 2014, 08:53
        0
        $dataobject = $modx->newObject($classname);
        $dataobject->set($field, $value);
        $dataobject->save();
        $id = $dataobject->get(''id);
        что, не работает?
          Володя
          24 ноября 2014, 08:56
          0
          get(''id);
            Igor
            24 ноября 2014, 09:07
            0
            Так пробовал уже. Не работает.
            Вариант
            $pk= $dataobject->getPrimaryKey();
            $id = $dataobject->get($pk);
            тоже.
            Пустая переменная.
              Володя
              24 ноября 2014, 09:11
              0
              а в вашей схеме есть pk?
                Igor
                24 ноября 2014, 09:26
                0
                Был ключ PRIMARY в схеме. Сейчас посмотрел нет его.
                  Володя
                  24 ноября 2014, 09:27
                  0
                  так добавьте
            Igor
            24 ноября 2014, 10:27
            0
            Всем спасибо за помощь. Так и не удалось заставить работать get(''id) и get(pk).
            Конструкция
            $modx->lastInsertId()
            работает.
              Igor
              24 ноября 2014, 13:39
              0
              Еще вопрос возник.
              Когда я делаю выборку из своей таблицы и перебор
              $results = $modx->getCollection($classname, $where)
              foreach($results as $key => $result)
              то key не является id элемента, а просто набор цифр от 0.
              В связи с вышеизложенным вопрос: как получить id?
              В схеме созданной при помощи migx поле id отсутствует как и PrimaryKey.
                Василий Наумкин
                25 марта 2015, 21:32
                0
                Должно работать так:
                foreach($results as $key => $result) {
                	echo $result->get('id');
                }
                Алексей
                25 марта 2015, 20:23
                0
                тут такие интересные вещи можно в сообществе накопать) это очень круто
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  16