我如何阻止symfony尝试为我在学说迁移中创建的视图创建表?
/**
* Class TenancyPendingInspection
* @ORM\Entity(repositoryClass="DJABundle\PropertyVisit\Repository\TenancyPendingInspectionRepository", readOnly=true)
* @ORM\Table(name="view_tenancies_pending_inspections")
*/
class TenancyPendingInspection
{
Run Code Online (Sandbox Code Playgroud)
我也有教条迁移文件.
doctrine:
dbal:
default_connection: default
connections:
default:
[...]
charset: UTF8
server_version: 5.6
schema_filter: ~^(?!view_)~
Run Code Online (Sandbox Code Playgroud)
php app/console doc:sch:val
[Mapping] OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.
Run Code Online (Sandbox Code Playgroud)
php app/console doc:sch:update --dump-sql
CREATE TABLE view_tenancies_pending_inspections ...
Run Code Online (Sandbox Code Playgroud) 大多数托管服务提供商只有 FTP 访问权限。
是否可以/通常在本地安装 symfony 项目(3.x 或 4.x),然后通过 FTP 上传并手动创建/更新数据库?
这个问题阻碍了我完全从 symfony 开始。
谢谢!
我想从学说查询中获取数组。\n我有自引用实体
\n\n应用程序\实体\访问模块
\n\n/**\n * @ORM\\ManyToOne(targetEntity="App\\Entity\\AccessModule", inversedBy="children")\n * @ORM\\JoinColumn(name="parent_id", referencedColumnName="id", nullable=true)\n */\nprivate $parent;\n\n/**\n * @ORM\\OneToMany(targetEntity="App\\Entity\\AccessModule", mappedBy="parent", fetch="EAGER")\n * @Serializer\\MaxDepth(2)\n */\nprivate $children;\n\n\n/**\n * AccessModule constructor.\n */\npublic function __construct()\n{\n $this->children = new ArrayCollection();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在这个存储库中
\n\n应用程序\\实体\\AccessModuleRepository
\n\n public function findAllArray()\n{\n return $this->createQueryBuilder(\'a\')\n ->getQuery()\n ->getResult();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这返回具有子级和父级的对象的集合。但是,当我想将此查询作为数组获取时,->getArrayResult()我仅获取包含“id”和“name”的数组,而没有子数组“children”和“parent”。
返回 $this->createQueryBuilder(\'a\')->getQuery()->getArrayResult();
\n\narray:3 [\xe2\x96\xbc\n 0 => array:2 [\xe2\x96\xbc\n "id" => 2\n "name" => "Common module"\n ]\n 1 => array:2 [\xe2\x96\xbc\n "id" => 3\n "name" => "User Module"\n ]\n 2 => …Run Code Online (Sandbox Code Playgroud) 当我使用参数设置服务sme_task.listener.status_change时,它不接收事件.
services:
sme_task.service.task_template:
class: Sme\TaskBundle\Service\TaskTemplateService
arguments: [@doctrine.orm.entity_manager]
sme_task.listener.status_change:
class: Sme\TaskBundle\Listener\StatusChangeListener
arguments: ["@sme_task.service.task_template"]
tags:
- { name: doctrine.event_subscriber, connection: default }
Run Code Online (Sandbox Code Playgroud)
如果我删除参数,则到达事件.
sme_task.listener.status_change:
class: Sme\TaskBundle\Listener\StatusChangeListener
tags:
- { name: doctrine.event_subscriber, connection: default }
Run Code Online (Sandbox Code Playgroud)
中小企业\ TaskBundle \监听\ StatusChangeListener.php
class StatusChangeListener implements EventSubscriber {
private $taskTemplateService;
public function __construct($taskTemplate=null) {
$this->taskTemplateService=$taskTemplate;
}
[...]
public function onFlush(OnFlushEventArgs $eventArgs) {
throw new \Exception("Event reached");
[... some calls to TaskTemplateService ...]
}
function getSubscribedEvents()
{
return array("onFlush");
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会发生这种情况以及如何解决这个问题?