【问题标题】:Symfony findOneBy / findBySymfony findOneBy / findBy
【发布时间】:2016-08-07 14:32:29
【问题描述】:

有人遇到过 Symfony 3(最后一个版本)这个奇怪的问题吗?

我有以下简单的代码:

$repository = $this->getDoctrine()
                   ->getManager()
                   ->getRepository('GeneralRegistrationBundle:Service');

$service = $repository->findOneBy(array('name' => 'Registration'),array('name' => 'ASC'));

$comment = $service->getComment();
$name = $service->getName();

return new Response('le service is '. $name . ', content is ' . $comment);

此代码有效。

我清除缓存并将findOneBy 更改为findBy:

$service = $repository->findBy(array('name' => 'Registration'),array('name' => 'ASC'),1 ,0);

然后我有以下错误:

错误:调用数组上的成员函数 getComment()

有人有想法或线索吗?

提前致谢。

【问题讨论】:

  • 您期待什么? findOne 返回一个且只有一个对象。 find 总是返回一个包含 0 个或多个对象的数组。
  • 呼……我现在需要去度假……谢谢 Cerad
  • 解决了吗?如果是这样,请标记或发布答案并接受。

标签: doctrine symfony


【解决方案1】:

findBy() 返回具有给定条件的对象数组。

如果没有找到则返回一个空数组。如果只有一行满足您的条件,那么您可以在 $service 的最后添加一个 [0],如下所示:

$service = $repository->findBy(array('name' => 'Registration'),array('name' => 'ASC'),1 ,0)[0];

如果没有,您应该使用 foreach 或类似的东西遍历找到的数组。

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多