как проверить или объявить значения массива массива как экземпляр класса / объекта

В моем проекте Symfony у меня есть массив $productContainer с некоторыми значениями вроде (php dump):

array:2 [▼
0 => "value1"1 => "value2"]

Я передаю этот массив в Product сущность по findBy метод в моем контроллере, как это:

$products = $this->getDoctrine()->getRepository('MyBundle:Product')
->findByValue($productContainer);

Результаты между методом findBy и значениями массива очень хорошо совпадают.

Но когда я проверяю, массив является экземпляр из моего учебный класс Product как это:

dump($products instanceof Product);
die;

это возвращает меня ложный

Я это понимаю $products является массив и не объект, но как я могу объявить мой массив $products как instanceof Product юридическое лицо ?

редактировать

Чтобы быть более точным, мне нужно объявить или проверить, если мои значения массива $products являются instanceof Product потому что в том же контроллере я должен передать массив $ products в queryBuilder для другой сущности, подобной этой:

$entity = $this->getDoctrine()->getRepository('MyBundle:Entity')
->getEntityWithProducts($slug, $products);

Я восстанавливаю массив $products по $_POST метод (Request $request)
Это метод контроллера, который я возвращаю в JsonResponse, поэтому я продолжаю в том же духе.

1

Решение

Пытаться findOneByValue вместо findByValue если вам нужен только один продукт.

Или же
извлечь какой-то один элемент из вашего полученного массива,
потому что вы получаете массив объектов после вызова findByValue,

Или же
пройти все элементы в полученном массиве, чтобы проверить их.

Или же
возможно в вашем продукте репозиторий присутствует метод findByValue которые делают какой-то персонал для вас.

Но в любом случае кажется странным проверить после доктрины, что он возвращает вам соответствующий экземпляр класса …

Если вы используете что-то вроде getArrayResult вы получите массив, в противном случае вы получите экземпляр соответствующей сущности.

3

Другие решения

Массивы не могут относиться к какому-либо объектному классу, но если я понимаю, что вы хотите сделать, возможно, вы можете попробовать использовать функции массива.

Попробуй это

$test = array_reduce(
$products,
function ($condition, $item) {
return $condition && $item instanceof Product;
},
true
);
// $test will be true if all elements of $products are instances
// of 'Product', false otherwise
0

По вопросам рекламы [email protected]