@neliudov
Имярек

Как правильно сохранить массив массивов в базу?

У меня стоит задача распарсить сайт и результат сохранить в базу, к которой будет обращаться другой сервис. Сейчас у меня есть такой метод:

private function getData(string $responseBody): array
    {
        $crawler = new Crawler($responseBody);

        $result = [];

        $types = $crawler->filter('div.event-list-item__type')->each(function (Crawler $node, $i) {
            return $node->text();
        });

        $result['type'] = $types;

        $titles = $crawler->filter('a.event-list-item__title')->each(function (Crawler $node, $i) {
            return $node->text();
        });

        $result['title'] = $titles;

        $times = $crawler->filter('div.event-list-item__info')->each(function (Crawler $node, $i) {
            return $node->text();
        });

        $result['time'] = $times;

        $locations = $crawler->filter('div.event-list-item__info_location')->each(function (Crawler $node, $i) {
            return $node->text();
        });

        $result['location'] = $locations;

        $links = $crawler->filter('a.event-list-item__title')->each(function (Crawler $node, $i) {
            return $node->attr('href');
        });

        $result['link'] = $links;

        return $result;
    }


Возвращается массив массивов. Мне нужно сохранить его с сохранением целостности записи. Другими словами, у меня имя события в первом массиве, тип события в другом, время - в третьем и так далее. Раньше парсил первый элемент со страницы и использовал dto, которая отлично с этим справлялась, а как применить такое к массиву - ума не приложу. В целом, сохранение идет в этом месте:
$novel->parse(...$urls)->then(function (array $events) use ($connection)  {
    $connection->save($events);
});


Может, посоветуете что? Спасибо.
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@egormmm
Борітеся — поборете!
Json_encode однозначно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы