В моем проекте 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, поэтому я продолжаю в том же духе.
Пытаться findOneByValue
вместо findByValue
если вам нужен только один продукт.
Или же
извлечь какой-то один элемент из вашего полученного массива,
потому что вы получаете массив объектов после вызова findByValue
,
Или же
пройти все элементы в полученном массиве, чтобы проверить их.
Или же
возможно в вашем продукте репозиторий присутствует метод findByValue
которые делают какой-то персонал для вас.
Но в любом случае кажется странным проверить после доктрины, что он возвращает вам соответствующий экземпляр класса …
Если вы используете что-то вроде getArrayResult
вы получите массив, в противном случае вы получите экземпляр соответствующей сущности.
Массивы не могут относиться к какому-либо объектному классу, но если я понимаю, что вы хотите сделать, возможно, вы можете попробовать использовать функции массива.
Попробуй это
$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