Mic*_*hon 5 doctrine symfony symfony4
我有一个类似example.org/overview/<column>/<value>(示例:)的URL 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;
[...]
Run Code Online (Sandbox Code Playgroud)
我想我应该在开始数据库查询之前检查实体属性是否存在。如何检查,当有人呼叫example.org/overview/foo/bar,如果foo是一个有效的数据库列(=实体属性)?Symfony在这里提供一个简单的解决方案吗?如果不是这种情况,我想我必须使用一个硬编码的白名单。
您可以像这样使用getClassMetadata:
$columns = $em->getClassMetadata(Car::class)->getColumnNames();
if (in_array($property, $columns)) {
//property exists, code here
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试:getFieldNames代替getColumnNames
亚历山德罗是对的,但hasField()存在确切的方法:
$metaCar = $em->getClassMetadata(Car::class)
if ($metaCar->hasField('foo')) {
//property exists
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |