php - Symfony 2/Doctrine 2 : Two Entities for the same table, 用一个代替另一个

标签 php symfony doctrine-orm

在我的 Symfony2 应用程序中,我将大部分实体提取到一个单独的库中,我使用 composer 安装该库。

这个库不依赖于 Symfony2(但确实依赖于 Doctrine,因为我使用注释),因为我也想在其他非 Symfony2 项目中使用它。

该库包含一个 ClientUser 实体,它映射到一个 client_users 表。在我的 Symfony2 应用程序中,我想使用相同的 ClientUser 实体进行身份验证。这需要我实现 Symfony\Component\Security\Core\User\UserInterface

问题是我想要一个“Symfony2-agnostic”一个ClientUser实体的“Symfony-aware”实现(两者都应该映射到同一张 table )。我尝试从 ClientUserAbstract 实体扩展这两个类,但没有成功。

<?php
namespace My\Library\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperClass
 */
class ClientUserAbstract {

    // all my fields here
}

我的“Symfony2-agnostic”实体:

<?php
namespace My\Library\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class ClientUser extends ClientUserAbstract {

    // nothing here, it's empty
}

我的“Symfony2-aware”实体:

<?php
namespace Vendor\Bundle\MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Entity
 */
class ClientUser extends ClientUserAbstract implements UserInterface {

    // all methods that Symfony requires because of the UserInterface here:
    public function getRoles();
    public function getPassword();
    public function getSalt();
    public function getUsername();
    public function eraseCredentials();
}

我的 Symfony 2 应用程序现在检测到两个实体,它们指向同一个表并因异常而失败。我要么需要告诉我的 Symfony2 应用程序“忽略”我的 My\Library\Entity\ClientUser,要么我需要一种方法来扩展它。有什么想法吗?

最佳答案

以防万一其他人有这个问题,这里是我的评论转换为答案:

对于给定的实体管理器,它严格来说是每个表一个实体。您需要创建第二个实体管理器并将其用于身份验证。

当然,我喜欢获得代表。

关于php - Symfony 2/Doctrine 2 : Two Entities for the same table, 用一个代替另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23955978/

相关文章:

php - 从 symfony/console 启动后台 symfony/进程

symfony - 如何在表单中添加非持久字段?

php - Symfony - 通过 ID 获取用户提供者

php - 如何选择每第n条记录?

php - 将数据从 int 传输到 string

php - 将 HTML 表格下载到 MS Access

php - 集成测试中的并行 PHPUnit 测试

php - 执行自定义 mysql 查询和 "Error: Invalid PathExpression. Must be a StateFieldPathExpression"

php - 带有 PHP 应用程序和用户 session 的 NodeJS

php - 我如何在原则 2 中进行复杂的实体关联查询? (虚拟实体)