Horik_off
@Horik_off
Developer

Почему SimpleXML вставляет в бд только первую запись из XML файла?

Привет. Пытаюсь ипортировать из XML-файла статьи в базу данных. Скажите, почему скрипт пишет только инфу о первой записи (в моем случае -- первой статьи ) и все. Аналогичное с вложенными елементами (например, с ключевыми словами к статьям журнала) - берет только один элемент и вставляет в бд.

Структура XML-документа (одна нода из n)
<articles>
         <section>
            <secTitle lang="RUS">ТЕОРЕТИЧЕСКИЕ И ПРАВОВЫЕ ОСНОВЫ</secTitle>
         </section>
         <article>
            <pages>3-6</pages>
            <artType>RAR</artType>
            <authors>
               <author num="001">
                  <individInfo lang="RUS">
                     <surname>Кулеш</surname>
                     <initials>Николай Николаевич</initials>
                     <orgName>Военный институт (Железнодорожных войск и военных сообщений)</orgName>
                     <email>Тел.: 8-981-981-91-97</email>
                     <otherInfo>курсант факультета Железнодорожных войск</otherInfo>
                  </individInfo>
                  <individInfo lang="ENG">
                     <surname>Kulesh</surname>
                     <initials>N.N.</initials>
                  </individInfo>
               </author>
            </authors>
            <artTitles>
               <artTitle lang="RUS">ОСНОВНЫЕ ПРАВОВЫЕ АСПЕКТЫ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ ФУНКЦИОНИРОВАНИЯ ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА</artTitle>
               <artTitle lang="ENG">MAIN LEGAL ASPECTS INCREASES OF SAFETY OF FUNCTIONING RAILWAY TRANSPORT</artTitle>
            </artTitles>
            <abstracts>
               <abstract lang="RUS">В статье рассматриваются основные правовые аспекты, направленные на повышение безопасности функционирования железнодорожного транспорта. Отмечается, что базовым документом по планированию развития системы обеспечения безопасности является Стратегия национальной безопасности Российской Федерации. На её основе разработаны законы «О безопасности», «О транспортной безопасности», «О железнодорожном транспорте» и другие. Перечислены задачи, которые необходимо решать для обеспечения безопасности на железнодорожном транспорте.</abstract>
               <abstract lang="ENG">In article the main legal aspects directed on increase of safety of functioning of railway transport are considered. It is noted that the basic document on planning of development of system of safety is Strategy of national security of the Russian Federation. On its basis the laws «About Safety», «About Transport Safety», «About Railway Transport» and others are developed. Tasks which need to be solved for safety on railway transport are listed.</abstract>
            </abstracts>
            <text lang="RUS"></text>
            <codes>
               <udk>519.876.5:343.326</udk>
            </codes>
            <keywords>
               <kwdGroup lang="ANY">
                  <keyword>безопасность</keyword>
                  <keyword>транспорт</keyword>
                  <keyword>система</keyword>
                  <keyword>стратегия</keyword>
                  <keyword>закон</keyword>
                  <keyword>концепция</keyword>
                  <keyword>safety</keyword>
                  <keyword>transport</keyword>
                  <keyword>system</keyword>
                  <keyword>strategy</keyword>
                  <keyword>law</keyword>
                  <keyword>concept</keyword>
               </kwdGroup>
            </keywords>
            <references>
               <reference>Пилявец О.Г. Организация перевозок железнодорожным транспортом в комплексе логистических процедур // Мир экономики и права. № 6. 2014. - С. 24-30.</reference>
               <reference>Пилявец О.Г. Концептуальный уровень представления и исследования процессов устойчивого функционирования транспортной системы страны на современном этапе развития экономики // Мир экономики и права. № 5. 2012. - С. 36-40.</reference>
               <reference>Пилявец О.Г. Прикладной инструментарий логистики как фактор обеспечения устойчивости функционирования железнодорожного комплекса // Монография. - СПб.: Изд-во «Лема», 2014. - 218 с.</reference>
               <reference>Указ Президента РФ от 12.05.2009 №537 «О стратегии национальной безопасности Российской Федерации до 2020 года» // «Собрание зако- нодательства РФ», 18.05.2009, № 20, ст. 2444/</reference>
               <reference>Федеральный закон РФ от 28.12.2010 № 390-ФЗ «О безопасности» // «Собрание законодательства РФ», 03.01.2011, № 1, ст. 2.</reference>
               <reference>Пилявец О.Г. Современная концепция логистики и менеджмента в сфере обеспечения безопасности перевозок на рынке транспортных услуг // Мир экономики и права. № 4-5. 2014. - С. 9-14.</reference>
               <reference>Федеральный закон от 09.02.2007 № 16-ФЗ (ред. от 18.07.2011) «О транспортной безопасности» // «Собрание законодательства РФ», 12.02.2007, № 7, ст. 837.</reference>
               <reference>Пилявец О.Г. Логистика и транспортная безопасность // Вопросы оборонной техники. Серия 16. Вып. 7-8 (73-74). 2014. - С. 8-12.</reference>
               <reference>Федеральный закон от 10.01.2003 № 17-ФЗ (ред. от 07.11.2011) «О железнодорожном транс- порте в Российской Федерации» // «Собрание законодательства РФ», 13.01.2003, № 2, ст. 169.</reference>
               <reference>Пилявец О.Г. Надежность и безопасность функционирования транспортной системы России в современных условиях // Мир экономики и права. № 9. 2012. - С. 48-52.</reference>
               <reference>Швецов В.Л., Прохоров А.В., Ильин И.В. Транспортные модели в системе государственного управления // Научно-технические ведомости Санкт-Петербургского государственного поли- технического университета. Экономические науки. Т. 5. № 85. 2009. - С. 20-27.</reference>
               <reference>Логинова А.В. Модели для управления организацией на основе структурно-кадрового под- хода // Научно-технические ведомости СПбГПУ. № 46. 2006. - С. 285-288.</reference>
               <reference>Анисимов Е.Г., Анисимов В.Г., Богоева Е.М., Гарькушев А.Ю., Сазыкин А.М. Основы построения моделей интеллектуализации в системах безопасности // Вопросы оборонной техники. Серия 16. Вып. 9-10 (75-76). 2014. - С. 22-27.</reference>
               <reference>Анисимов В.Г., Анисимов Е.Г. Алгоритм ресурсно-временной оптимизации выполнения комплекса взаимосвязанных работ // Вестник Рос- сийской таможенной академии. № 1. 2013. - С. 080-087.</reference>
               <reference>Анисимов В.Г., Анисимов Е.Г. Математические модели и методы в управлении развитием сложных технических систем. - СПб.: Политехника, 2004. - 280 с.</reference>
               <reference>Малыгин И.Г., Сильников М.В. Интеллектуальные системы транспортной безопасности // Проблемы управления рисками в техносфере. 2014. № 1 (29). - С. 1-13.</reference>
               <reference>Малыгин И.Г., Сильников М.В. Применение интеллектуальных систем транспортной бе- зопасности в мегаполисах: проблемы и перспективы // Вопросы оборонной техники. Серия 16. Вып. 3-4 (69-70). 2014. - С. 76-82.</reference>
            </references>
            <files>
               <file>1_1-2_2_Jurnal.pdf</file>
            </files>
         </article>
      .......
</articles>


Код скрипта:
$articleForImport = new Articles();
                foreach ($fileXML->issue->articles->article as $articleFromXML) {
                    $articleForImport->ydk_code = strval($articleFromXML->codes->udk);
                    $articleForImport->header = strval($articleFromXML->artTitles->artTitle);
                    $articleForImport->annotation = strval($articleFromXML->abstracts->abstract);
                    foreach ($articleFromXML->keywords->kwdGroup->children() as $keyWords){
                        $articleForImport->keywords = strval($keyWords);
                    }
                    $articleForImport->fk_issue = $issue->id;
                    if ($articleForImport->validate()) {
                        $articleForImport->save();
                    } else {
                        var_dump($articleForImport->getErrors());
                    }


Вот что получается в БД (пишет только первую статью). Скрипт перезапускал много раз. поэтому продублировались записи, но не суть.
142742b9bc1a414aaebe0928545c525b.png
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Когда Вы создаете новый объект - Вы создаете новую запись.
т.е. $articleForImport = new Articles(); означает, что Вы создаете одну запись в БД. Циклом Вы его перезаписываете. Один и тот же объект (запись). Мне кажется, надо попробовать инициализировать этот объект внутри цикла foreach. Тогда с казждой итерацией цикла будет новая запись в БД.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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