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

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

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

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

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

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