【问题标题】:Symfony Controller findBy() not working with variableSymfony 控制器 findBy() 不使用变量
【发布时间】:2015-08-28 04:09:02
【问题描述】:

我尝试在我的控制器中使用 findBy(),它仅在我使用纯文本而不是变量时才有效 - 但两者都是字符串,例如:

$repository = $this->getDoctrine()->getRepository('SchlauchBundle:Armatur');

$armatur = $entity->getArmatur();

$armaturen = $repository->findBy(
    array('nameArmatur' => $entity->getArmatur())
);

var_dump($armatur) 输出:
string(21) "Klemmschalen EN 14420"

但是 var_dump($armaturen) 输出:
NULL

当我将 findBy() 部分更改为:

$armaturen = $repository->findBy(
    array('nameArmatur' => "Klemmschalen EN 14420")
);

它有效 - 这让我很困惑!我无法使用该变量可能是什么问题?我不明白其中的区别。

在实体文件中定义(没什么特别的):

/**
* @var string
*/
private $nameArmatur;

【问题讨论】:

    标签: symfony controller findby


    【解决方案1】:

    尝试做一个 trim(array('nameArmatur' => $entity->getArmatur()) 看看是什么行为

    【讨论】:

    • 这不会改变任何东西——同样的事情
    【解决方案2】:

    我使用以下样式,效果很好 -

    $marker = $em->getRepository('SkerpGenericBundle:Marker')->findBy(array('userid' => $userObj->getId()));
    

    真奇怪!我没有遇到过这种问题。

    【讨论】:

    • 似乎还有另一个主要问题 - 有时它不适用于纯文本。我不知道是什么问题 - 数据库中的字段存在并且完全填充了该字符串。为什么它有效而有时无效是一个谜。当我按照您的方式进行操作时,当我从与控制器相关的数据库中提取某些内容时,它就会起作用。
    • 您能否在上面的代码中添加您的 $entity 对象代码和 $entity 转储。这样调试起来会很方便
    • 我添加了部分,不确定它是否正是您需要的。
    【解决方案3】:

    似乎$entity->getArmatur() 可能会返回一个已实现__toString 方法的对象。 也许尝试类似:

    $armaturen = $repository->findBy(
        array('nameArmatur' => $entity->getArmatur()->__toString())
    );
    

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多