Способ добавления Resource ID в DB - автоинкримент



  • Подскажите, пожалуйста, где в настройках -способ добавления Resource ID в DB (migxdb)? При удалении документов, следующие создаются через +число удаленных. Например, после документа "6" , следующий "900". Что-нибудь типа автоинкримента для resource_id есть,



  • Пришлось править вручную modx_site_content. Скажите, а можно сделать типа так
    /* получить id только что добавленной записи и
    по возможности переместить её в свободный id */
    function GetInsertId($tbl){
    global $insert_id;
    $id0=mysql_insert_id(); if($id0<1) return $id0;
    $id_from=(isset($insert_id[$tbl])?$insert_id[$tbl]:1);

    for($id=$id_from; $id<$id0; $id++){
    $result = mysql_query('SELECT id from '.$tbl.' WHERE id='.$id.' LIMIT 1');
    if(mysql_num_rows($result)==0){
    mysql_query('UPDATE IGNORE '.$tbl.' SET id='.$id.' WHERE id='.$id0.' LIMIT 1');
    if(mysql_affected_rows()<1)continue; // уже заняли
    $insert_id[$tbl]=$id+1;
    return $id; // id - свободен
    }
    }
    $insert_id[$tbl]=$id;
    return $id0;
    }



  • @innabasil
    Не очень понятен ваш вопрос.
    modx_site_content - это таблица ресурсов Modx, а не Migx.

    Что касается добавления на ближайший свободный, как я понимаю, там это не просто так сделано. Ведь у вас есть связанные таблицы. Те же ТВ и т.д. и в них хранится информация в привязке к id из modx_site_content. Если вы удаляете документ, по идее должны удалиться и ТВшки, но есть проблема - это не всегда так.
    Например, если у вас смежные снипеты установлены, то в их таблицах те же привязки удалены не будут. В итоге, если вы поправите напрямую в таблице, у вас к новому документу привяжутся ТВшки от старого документа, например отзывы или рейтинги и кто знает что еще полетит...



  • @slaad инкремент Resource ID - в таблице site_content. Только и всего. Доходит с n-го раза... sorry



Последние темы

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.