Symfony,继承实体和学说迁移

时间:2020-01-24 08:40:37

标签: php doctrine-orm database-migration single-table-inheritance symfony5

Symfony 5.0 下,我使用通用实体类来统一内部项目。我的通用实体(例如表格)如下所示:


use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\TableRepository")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorMap({"generic_table": "App\Entity\Generic\Table", "table": "App\Entity\Table"})
 */
class Site
{
    //protected properties and public methods
}

继承的类:


use App\Entity\Generic\Table as GenericTable;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\TableRepository")
 */
class Table extends GenericTable
{
    //private properties and public methods
}

但是,执行此命令时:

php bin/console make:migration

它返回以下内容:

Table mybd.table already exists.

即使表没有。

有什么主意吗?我忘记了ORM声明吗?

1 个答案:

答案 0 :(得分:0)

线索:我们必须在@ORM \ Table注释上定义不同的表名:

bool do_poll(std::vector<struct pollfd> &poll_data, int timeout) { ... for (const auto &fd_data : poll_data) { event_mask = 0; if (0 != (fd_data.events & POLLIN)) { // select() will mark a socket as readable when it closes (read size = 0) or (for // a listen socket) when there is an incoming connection. This is the *nix paradigm. // WSAEventSelect() hasseparate events. event_mask |= FD_READ; event_mask |= FD_ACCEPT; event_mask |= FD_CLOSE; } if (0 != (fd_data.events & POLLOUT)) { event_mask |= FD_WRITE; } event_obj = WSACreateEvent(); events.push_back(event_obj); if (WSA_INVALID_EVENT != event_obj) { (void)WSAEventSelect((SOCKET)fd_data.fd, event_obj, event_mask); } } lock.lock(); if (WSA_INVALID_EVENT == interrupt_obj) { interrupt_obj = WSACreateEvent(); } if (WSA_INVALID_EVENT != interrupt_obj) { events.push_back(interrupt_obj); } lock.unlock(); ... (void)WaitForMultipleObjectsEx(events.size(), &(events[0]), FALSE, dw_timeout, TRUE); for (i = 0u; i < poll_data.size(); i++) { if (WSA_INVALID_EVENT == events[i]) { poll_data[i].revents |= POLLERR; } else { if (0 != WSAEnumNetworkEvents((SOCKET)(poll_data[i].fd), events[i], &revents)) { poll_data[i].revents |= POLLERR; } else { if (0u != (revents.lNetworkEvents & (FD_READ | FD_ACCEPT | FD_CLOSE))) { poll_data[i].revents |= POLLIN; } if (0u != (revents.lNetworkEvents & FD_WRITE)) { poll_data[i].revents |= POLLOUT; } } (void)WSAEventSelect((SOCKET)(poll_data[i].fd), NULL, 0); (void)WSACloseEvent(event_obj); } } ... } for @ORM\Table(name="generic_table")

class Table for @ORM\Table(name="table")

最后,它仅在数据库表class Table extends GenericTable中创建,并在该表上重新定义约束。但是我仍然有存储库问题...

相关问题