Итерация по результатам базы данных - PullRequest
0 голосов
/ 26 сентября 2019

Я возвращаю данные из моего запроса.Перебирая результаты и помещая данные в разные массивы.Когда я пытаюсь выполнить цикл по массиву, я получаю только первый набор данных и ничего больше.

 my @data = ();
 for my $row (@$query_data) {
     if($row->[11] == 2)
     {
          push(@data,$row)
     }
 }

На скрипте perl работает следующее и я получаю ожидаемый результат.

    for my $row (@xm_data) {
       print "$row->[6]\n";
    }

выводит

   mike
   steve

Когда я делаю то же самое более или менее в духе радости, я получаю разные результаты.Я перехожу к рендеру выглядит xm_data => @xm_data и получаю только первые результаты.
Циклы шаблона ниже.

% for my $request_data (@{$xm_data}) {
    <%= $request_data %>
% }

, если я пытаюсь использовать тот же синтаксис, что и в файле .pl, который яполучить ошибки.

1 Ответ

2 голосов
/ 26 сентября 2019

Я ничего не знаю о mojolicious, но я знаю немного perl.

Твой xm_data => @xm_data выглядит подозрительно для меня.Если вы присваиваете массив скаляру в perl, он принимает только первый элемент этого массива.Чтобы назначить указатель на массив, который выглядит так, как вы пытаетесь сделать, вам нужно использовать обратную косую черту.

Например.xm_data => \@xm_data.

Это даст вам ссылку на массив, который затем вы можете разыменовать позже в вашем цикле foreach, как вы, кажется, уже делаете.

Помогает ли это

...