У меня есть URL-адрес типа example.org/overview/<column>/<value> (пример: example.org/overview/color/red), который вызовет поиск в столбце «цвет» значения «красный». Это сущность:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
// @ORM\Entity(repositoryClass = "App\Repository\CarRepository")
class Car
{
// @ORM\Column(type = "string", length=255)
private $name;
private $color;
[...]
Я думаю, я должен проверить, существует ли свойство объекта, прежде чем я начну запрос к базе данных. Как я могу проверить, когда кто-то вызывает example.org/overview/foo/bar, является ли foo допустимым столбцом db (= свойством объекта)? Предлагает ли Symfony здесь простое решение? Если это может быть не так, я думаю, мне нужно использовать жесткий белый список.




вы можете использовать getClassMetadata следующим образом:
$columns = $em->getClassMetadata(Car::class)->getColumnNames();
if (in_array($property, $columns)) {
//property exists, code here
}
Вы также можете попробовать: getFieldNames вместо getColumnNames
Рад помочь вам @Michon
Алессандро прав, но точный метод hasField() существует:
$metaCar = $em->getClassMetadata(Car::class)
if ($metaCar->hasField('foo')) {
//property exists
}
В php есть функция property_exists.