SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type integer, Doctrine parameter conversion

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type integer, Doctrine parameter conversion

各位早安, 我有两个链接的数据库,表是 UserTheme,记住我对 php 和 symfony 框架不是很熟悉。 主题链接到用户:

/src/Entity/Theme.php
/**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="published")
     * @ORM\JoinColumn(nullable=false)
     */
   private $user; 

我正在尝试设置一个功能来显示该用户根据他的姓氏编写的所有主题,根据我的理解 @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="published") 确保我的主题不仅仅由 user_id 但用户实体。

在我的 ThemeController.php 中,我的功能是这样设置的:

/**
     * @Route("/theme/show/{lastname}", name="theme_created_by")
     * 0@param User $ThemeByUser
     */
    public function userThemes(User $ThemeByUser){
        $html =  $this->twig->render('theme/index.html.twig', [
            'themes' => $this->themeRepository->findBy(
                ['User' => $ThemeByUser], ['created_at' => 'DESC']),
        ]);
        return new Response($html);
    }

似乎 Doctrine 的查询没有通过我得到这个错误:

An exception occurred while executing 'SELECT t0.id AS id_1, t0.name AS name_2, t0.created_at AS created_at_3, t0.updated_at AS updated_at_4, t0.user_id AS user_id_5 FROM theme t0 WHERE t0.id = ?' with params ["Roland"]:

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type integer: "Roland"

这意味着 Doctrine 需要一个 int 作为参数,但它接收的是一个字符串。在阅读文档时,似乎参数已转换为匹配数据中的任何内容。也许我不完全理解它是如何工作的,只需要一点指导。 谢谢

不知道如何以及为什么,但在我的 twig 文件中呈现函数:

<p class="media-body pb-3 mb-0  small lh-125 border-bottom border-gray">
        <strong class="text-gray-dark">Autheur : </strong>
        <a href="{{ path('theme_created_by', {'lastname': theme.user.lastname}) }}">
             {{ theme.user.lastname }}
        </a>
        <br/>
        <a href="{{ path( 'theme_show', {'id' : theme.id} ) }}">
            <strong>{{ theme.name }}</strong><br/>
        </a>

我将该路径行替换为:

<a href="{{ path('theme_created_by', {'username': theme.user.username}) }}">
             {{ theme.user.lastname }}
        </a>

也更改了在我的路线中传递的参数:使用 username @Route("/themes/by/{username}", name="theme_created_by") 现在可以使用了..