使用FOSUserBundle和FR3DLdapBundle丢失数据库列

use*_*464 3 orm symfony doctrine-orm fosuserbundle fr3dldapbundle

  • 我按照FOSUserBundle文档(文档)和FR3DLdapBundle(文档)中的说明进行操作
    • 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;
}

}
Run Code Online (Sandbox Code Playgroud)
  • 如果我通过php app/console doctrine更新我的架构:schema:update --em = someEm Doctrine插入新表.但是它只插入id列,而不是插入继承的列
  • 我不知道这是一个FOSUserBundle错误还是FR3DLdapBundle错误
  • 如果我完全删除FR3DLdapBundle部分,它也不起作用
  • 因此我认为这是FOSUserBundle中的某种错误
  • 有没有人有想法?

非常感谢提前!

Cer*_*rad 13

FOSUserBundle现在处于转换状态,因此它取决于您拥有的版本.

你可能需要:

use FOS\UserBundle\Entity\User as BaseUser;  // Note Entity instead of Model
Run Code Online (Sandbox Code Playgroud)

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

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

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

现在一切都非常不稳定.

当然,您还必须正确设置您的学说映射:

           mappings:
                FOSUserBundle: ~
                MyBundle: ~
Run Code Online (Sandbox Code Playgroud)

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

  • 您能否更新您的答案以说明版本?FOSUserBundle版本1.3.4(稳定版本)及以下版本要求`使用FOS\UserBundle\Entity\User`和版本2.0.0(dev-master)需要`使用FOS\UserBundle\Model\User` (2认同)