За последние 24 часа нас посетили 17924 программиста и 1574 робота. Сейчас ищут 1280 программистов ...

Ищу простой способ заполнить бд фейковыми данными

Тема в разделе "Laravel", создана пользователем Сереганек, 12 сен 2017.

  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Использую Faker, все работает, но не знаю как заполнить таблицу следующими данными.
    У меня есть комменты, у которых мо жет быть несколько уровней вложенности: level0-level3 и т.д. Если это например level2, то это означает, что данный комментарий - это реплика на коммент предыдущего уровня. В связи с этим возникает задача сформировать таблицу в которой есть id (порядковый номер коммента), level (уровень вложенности коммента), parent (id родительского коммента) и др... Причем нужно это сделать примерно так, как это показано на картинке. Может кто-то подкинет интересную идею как это можно красиво организовать с учетом того, что уровней может быть больше? У меня есть решение, но оно очень громоздкое, требует несколько раз обходить двумерный массив и выполнять кучу проверок. А может кто-то подскажет принципиально другой подход к решению задачи?
     

    Вложения:

    • IMG_0648.JPG
      IMG_0648.JPG
      Размер файла:
      194,9 КБ
      Просмотров:
      7
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    level не нужен. parent_id достаточно. Если parent_id == 0 то это комент первого уровня.
    --- Добавлено ---
    Получаешь из бд в массив все коменты к текущей сущности (статья или что там у тебя) и по очереди выводишь коменты, у которых parent_id == 0, попутно проверяя, нет ли коментов, у которых parent_id == id текущего элемента.
    Одной рекурсивной функцией можно решить эту задачу.
     
    #2 TeslaFeo, 12 сен 2017
    Последнее редактирование: 12 сен 2017
    Сереганек нравится это.
  3. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Да, так и сделаю.

    Да, но это когда я уже отображаю комменты из таблицы на странице. А у меня задача - наполнить эту таблицу данными. И самое сложное - это правильно определить связи между комментами
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    коментами, которые пишут люди или которые летят из факера?
    я этими факерами не пользовался. Нужно знать в каком формате летят коменты.
     
  5. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Из факера в таблицу, но все поля, которые мог, я заполнил факером. А тут как бы факер не очень поможет, здесь мне придется определить какие значения писать в таблицу самостоятельно. Считаем, что никакого факера нет. Мне нужна идея, как определить вот эти уровни вложенности в виде чисел для каждого из комментов. А уже потом я это запихну в таблицу и без факера
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    А в коментариях должна быть какая-то человеческая логика?
    Как они изначально были связаны между собой?
     
  7. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Изначально ничего не было и пока еще нет.
    Логика: в гостевой книге кто-то оставил свой коммент, на его коммент кто-то кинут реплику, на эту реплику кто-то еще что-то написал. Все эти комменты между собой связаны. Чтобы это определить необходимо для каждого коммента какой из комментов является родительским для него. Понятно, что когда пользователь будет писать коммент, то это будет определяться автоматически. Сейчас юзеры ничего еще не пишут, но мне нужна тестовая база, на которой я бы мог сверстать страницу. Ее нужно заполнить тестовыми комментами (это я уже сделал) и определить связи между ними (кто кому родитель). Вот в этом вся соль.
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Т е тебе вообще не важно чтобы был смысл в комментариях и их связях?
    --- Добавлено ---
    имею в виду человеческий смысл, типа под статьёй про холодильник будет комментарий "фильм гавно", а в ответ на него реплика про мамку какого нить блогера.
     
  9. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Да, так норм, по смыслу роли не играет, только структурно, примерно как показано на картинке вначале. У меня комменты заполнены лоремом.. без гавна и прочего ))))
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Как успехи?
    У меня есть идея, но по моему, довольно идиотская :)
    Берешь пачку коментов, которые будут принадлежать одной статье.
    И перебираешь этот массив. На каждой итерации рандомишь число от 0 до 2.
    Если выпадает 0, то этот комент помещаешь в корень.
    Если 1, то оставляешь на том же уровне.
    Если 2, то делаешь комент дочерним к предыдущему.
    Сохраняешь всё в массив и обновляешь бд.
     
    Сереганек нравится это.
  11. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Я пока вручную проставил два десятка чисел, на первое время этого хватит. А вообще очень даже интересная идея, а главное - компактная!!! Большое спасибо :)