Проверьте, существует ли свойство объекта - PullRequest
0 голосов
/ 31 мая 2018

У меня есть URL-адрес типа example.org/overview/<column>/<value> (пример: example.org/overview/color/red), который приведет к поиску в столбце «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 действительным столбцом БД (= свойство сущности)?Symfony предлагает простое решение здесь?Если это не так, я думаю, что я должен использовать жестко закодированный белый список.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Алессандро прав, но точный метод hasField() существует:

$metaCar = $em->getClassMetadata(Car::class)

if ($metaCar->hasField('foo')) {
   //property exists
}
0 голосов
/ 31 мая 2018

вы можете использовать getClassMetadata следующим образом:

$columns = $em->getClassMetadata(Car::class)->getColumnNames();

if (in_array($property, $columns) {
   //property exists
}

Вы также можете попробовать: getFieldNames вместо getColumnNames

...