За последние 24 часа нас посетили 8219 программистов и 660 роботов. Сейчас ищет 191 программист ...

Проблема c PHP Doctrine Collections

Тема в разделе "PHP для профи", создана пользователем Awilum, 8 окт 2019.

  1. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    235
    Симпатии:
    11
    Адрес:
    Russian Federation
    Доброго времени суток!

    Пытаюсь понять почему https://www.doctrine-project.org/projects/collections.html так вот работает и как это исправить, но пока безуспешно. C одним вариантом работает без ошибок, но на втором варианте входящих данных в упор не хочет работать.

    Пример 1

    Код (Text):
    1.  
    2. $collection = new ArrayCollection(['entry1'=> ['visibility' => 'draft'],
    3.                                     'entry2' => ['visibility' => 'public']]);
    4.  
    5. $criteria = new Criteria();
    6.  
    7. $expr = new Comparison('visibility', Comparison::NIN, ['draft', 'hidden']);
    8.  
    9. $criteria->where($expr);
    10.  
    11. $entries = $collection->matching($criteria);
    12.  
    13. $entries = $entries->toArray();
    14.  
    15. print_r($entries);
    Получим результат:

    Код (Text):
    1. Array ( [entry2] => Array ( [visibility] => public ) ) Array ( [entry2] => Array ( [visibility] => public ) )

    Пример 2

    Код (Text):
    1.  
    2. $collection = new ArrayCollection(['entry1'=> ['visibility' => 'draft'],
    3.                                    'entry2' => ['title' => 'Test title']]);
    4.  
    5. $criteria = new Criteria();
    6.  
    7. $expr = new Comparison('visibility', Comparison::NIN, ['draft', 'hidden']);
    8.  
    9. $criteria->where($expr);
    10.  
    11. $entries = $collection->matching($criteria);
    12.  
    13. $entries = $entries->toArray();
    14.  
    15. print_r($entries);
    Получим ошибку:
    Код (Text):
    1. Twig \ Error \ RuntimeError
    2. An exception has been thrown during the rendering of a template ("Undefined index: visibility").
    Почему бы ему не вернуть только найденые результат(ы) а не крешится?

    Видео:
    https://gofile.io/?c=ipdIEd