Symfony - 调用字符串上的成员函数 getDestination()

Symfony - Call to a member function getDestination() on string

在我的 Symfony 项目中,我返回了所有对象,这些对象都带有定义为 Paginator.

的 Doctrine 查询构建器

转储$posts['data']时,响应在图像上:IMAGE

当进入循环并转储第一个结果时,这就是我得到的:IMAGE

我想在每个数组对象上分配新的 key-value 对。每个数组对象都有 destinationId(你可以在图像上看到),我有一个通过该参数搜索名称的方法。 我想将该新值分配给 foreach 中的每个对象。

代码:

$posts = $this->entityManager->getRepository(Post::class)->getPage();

foreach ($posts['data'] as $postsData) {
    foreach ($postsData as $post) {
        $destinationName =  $this->destinationService->getDestinationNameById(
            $post->getDestinationId()
        );
        $postsData['destinationName'] = $destinationName;
    }
}

错误是:

Call to a member function getDestinationId() on string

这很奇怪,因为该字段的实体类型定义为字符串,并且在转储时也是如此

dump($post->getDestinationId()); 

我得到:"107869901061558" 这是字符串。

这是因为您覆盖了 $postsData 变量。 您需要使用不同的变量来存储您的 $destinationName,如下所示:

$posts = $this->entityManager->getRepository(Post::class)->getPage();
$destinationNames = [];

foreach ($posts['data'] as $postsData) {
  foreach ($postsData as $post) {
    $destinationName =  $this->destinationService->getDestinationNameById(
      $post->getDestinationId()
    );
    $destinationNames[$post->getId()] = $destinationName;
  }
}

像这样,您可以将 $destinationNames 发送到您的模板并找到正确的 $destinationName 感谢索引。