gpt4 book ai didi

php - symfony2 ContextErrorException : Catchable Fatal Error: Object of class Proxies\__CG__\. ..\Entity\... 无法转换为字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:44 26 4
gpt4 key购买 nike

我遇到了一些奇怪的事情:

我通过 app/console doctrine:generate:entity 创建了三个 doctrine 实体:

  • 类别
  • 用户
  • 发布

我建立了关系,并且一切都与 fixtures 数据一起正常工作(app/console doctrine:fixtures:load)。

一篇文章属于一个类别 (category_id),并且有一个作者 (user_id)。

我使用 app/console doctrine:generate:crud 为我的所有实体获取 CRUD 操作。

当我更新一个帖子时,我得到了这个奇怪的错误:

ContextErrorException: Catchable Fatal Error: Object of class Proxies__CG__...\BlogBundle\Entity\Category could not be converted to string

为了正确显示我在 PostType() 中使用的下拉字段:

$builder ....
->add('categoryId','entity', array(
'class' => 'HotelBlogBundle:Category',
'property'=>'name'
))
->add('userId','entity',array(
'class'=>'UserBundle:User',
'property'=>'username'
))

因为我指定了 property 选项,所以我的实体类中不需要 __toString()

如果我像这样创建一个 __toString()(在类别和用户实体中),错误就会消失并起作用:

public function __toString()
{
return (string) $this->getId();
}

我不确定我的做法是否正确。

此外,由于 CategoryUser 对象被传递给 category_iduser_id 字段,Doctrine(或Symfony) 应该能够找出 id 列。我错过了什么?还有其他方法吗?

最佳答案

我刚遇到这个问题并出现上述错误(并在此处结束),我将发布对我有用的解决方案 - 看到没有其他答案。

与 OP 一样,我也创建了一个新表并使用 Doctrine 加入。

此错误告诉我们连接的对象 无法转换为字符串。我们必须在对象中提供一个 __toString() 方法,以便将其转换为字符串,或者我们可以使用 property< 指定要在 Form Builder 中返回的字段 键。

为你的对象添加一个__toString()方法

/**
* (Add this method into your class)
*
* @return string String representation of this class
*/
public function __toString()
{
return $this->name;
}

或将属性键添加到您的表单生成器

// where `name` equals your field name you want returned
$builder->add('category', null, ['property' => 'name'])

我只是将 __toString() 方法添加到我的 entity 中,我只有字段 idname - 所以唯一的字符串表示是 name

关于php - symfony2 ContextErrorException : Catchable Fatal Error: Object of class Proxies\__CG__\. ..\Entity\... 无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com