我正在研究Symfony项目。我从Bundle获得商店列表。在下面的控制器动作中,我想知道结果的来源。
检查Snippet" EducateToolsBundle:Stores"在下面的代码中。
myAction (){
$stores = c2gr($this, 'EducateToolsBundle:Stores')->findBySelectOption(true); // Where can i Find/change the Data of stores.
$userLocations = array();
foreach ($stores as $store) {
$userLocations[] = $store->getId();
}
}
答案 0 :(得分:2)
我不确定c2gr
是什么,所以我会假设它是一个自定义函数,可以获取你的学说资源库。 Simmilar对此:
$repo = $this->get('doctrine.orm.entity_manager')->getRepository('EducateToolsbundle:Stores');
$stores = $repo->findBySelectOption(true);
结果将来自您正在使用的数据库,无论是MySQL,Postgres,MongoDB还是其他。
如果您想更改商店,可以通过调用商店实体上的设置器来代码执行此操作(您必须检查您的实体以查看实际存在的商家):
foreach ($stores as $store) {
// Assuming that a Store has a SetLocation method that takes a string
$store->setLocation('Las Vegas');
}
如果您只是需要快速更改数据而不想编写代码,则需要访问数据库。
来自评论的更新
findBySelectOption
是Doctrine在SQL中执行WHERE
子句的方式。因此,调用findBySelectOption(true)
将大致转换为:
SELECT * FROM Stores WHERE SelectOption = true;
如果您要查找LOCTYPE = 9的商店,则可以将findBySelectOption(true)
替换为:
findBy(['selectOption' => true, 'LOCTYPE' => 9])
将转换为:
SELECT * FROM Stores WHERE SelectOption = true AND LOCTYPE = 9;
注意:您必须检查商店实体,找到SelectOption
和LOCTYPE
的正确大小写,否则可能无效。
即。商店的归属是LOCTYPE
或loctype
还是LocType
?
更新2 如果你想找到不相等的,例如:
WHERE LOCTYPE != 9
然后你必须在查询构建器上做一些额外的工作。请参阅this question。