使用FOSUserBundle和FR3DLdapBundle丢失数据库列

时间:2013-08-02 12:30:32

标签: symfony orm doctrine-orm fosuserbundle fr3dldapbundle

  • 我按照FOSUserBundle文档(documentation)和FR3DLdapBundle(documentation)中的说明进行操作
    • FOSUserBundle需要扩展BaseUser类,而FR3DLdapBundle需要User Class来实现 LdapUserInterface 接口
    • 在我的情况下,这导致了这样的类:

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use FR3D\LdapBundle\Model\LdapUserInterface;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser implements LdapUserInterface
{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

private $dn;

/**
 * the constructor
 */
public function __construct() {
    parent::__construct();
    // your own logic
}

/**
 * {@inheritDoc}
 */
public function getDn() {
    return $this->dn;
}

/**
 * {@inheritDoc}
 */
public function setDn($dn) {
    $this->dn = $dn;
}

}
  • 如果我通过 php app / console doctrine更新我的架构:schema:update --em = someEm Doctrine会插入新表。但是它只插入id列,而不是
  • 的继承列
  • 我不知道这是否是FOSUserBundle错误或FR3DLdapBundle错误
  • 如果我完全删除了FR3DLdapBundle部分,则它无法正常工作
  • 因此我认为这是FOSUserBundle中的某种错误
  • 有没有人有想法?

提前多多感谢!

1 个答案:

答案 0 :(得分:13)

FOSUserBundle现在处于转换状态,所以它取决于你的版本。

您可能需要:

use FOS\UserBundle\Entity\User as BaseUser;  // Note Entity instead of Model

获取基本属性。他们正在向模型转移,这解释了为什么你可能在文档中看到了Model \ User。但还没有稳定的发布。

您可以尝试将composer.json更改为:“friendsofsymfony / user-bundle”:“dev-master”,并进行更新。或者,如果您已经在使用dev-master,请进行更新。

之后模型库应该可以工作。但是,您的其他一些代码可能会停止工作。

现在一切都很不稳定。

当然,您还需要将您的学说映射设置正确:

           mappings:
                FOSUserBundle: ~
                MyBundle: ~

但我认为你有这个,因为你在尝试添加Ldap之前首先让FOSUserBundle正常工作。你做得对吗?