php - 使用 Symfony 更新命令中的实体
问题描述
我正在尝试使用 Symfony 3.4 为控制台创建一个命令。基本上通过控制台添加角色。
首先,我能够通过ContainerAwareCommand
$em = $this->getContainer()->get('doctrine')->getManager();
然后像这样从输入中获取用户对象
$user = $em->getRepository(User::class)->findByUsername($username);
此行的错误显示:
$user->setRole($role);
错误:
Error: Call to a member function setRole()
实体:
/**
* @ORM\Column(name="role", type="string", nullable=true)
*/
private $role;
.....
public function setRole($role)
{
$this->role = $role;
return $this;
}
...
解决方案
回应您的评论:
通过在调用之前查看$user
via 进行调试导致它是一个数组的结论。get_class()
->setRole
再次查看您的代码,您错误地使用findByUsername
(返回结果数组)而不是findOneByUsername
(仅返回一个结果或null
)。
推荐阅读
- html - 如何使用引导程序使表格响应并与图像对齐
- c++ - 我可以在 C++17 中使用 std::any 作为指向成员变量的指针吗?
- r - Postscript 无法从 R Script 找到 MacOS 上已安装的字体
- c# - 类型不包含“Round”和“Parse”的定义
- office-js - Outlook 插件:对话框:Office.js 已在 Office 客户端之外加载”在对话框弹出窗口 - IE 和 Edge
- docker - Nimbus 主机分辨率不正确
- javascript - 在 JavaScript 中添加指向子节点的链接
- json - 如何将从 Firebase 返回的 JSON 解析为 Google 表格行?
- python-3.x - Google Colab - tensowflow 对象检测 api - “函数”对象没有“调用”属性
- javascript - JS - 将 div 高度设置为窗口高度