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
感谢索引。
在我的 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
感谢索引。