我已经安装了FOS UserBundle。
问题是:我的用户表的“id”字段称为userID。
我无法更改依赖于userID字段的其他表和编程的bc。
如果我尝试登录,则会收到错误消息:
Unrecognized field: id
问题似乎在于对id字段的调用:
UserManager ->findUserBy (array('id' => 1))
我可以以某种方式覆盖FOS UserBundle,以便findby()方法将id传递给userID吗? 或者我是否完全错了,必须采取另一种方式?
答案 0 :(得分:0)
实体中的字段名称不必与sql表中的字段名称相同。因此,您可以在doctrine实体中使用“id”作为字段,并将其映射到sql表中的“userID”字段。
如果您正在为您的用户实体使用Doctrine注释,就像在FOSUserBundle文档中一样,这可以解决问题:
/**
* @ORM\Id
* @ORM\Column(name="userID", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
我没有对它进行测试,并且它有可能无效,因为id字段总是有点“特殊”,但它可能值得一试。
答案 1 :(得分:0)
生成您自己的UseBundle并添加定义类似的实体。
<?php
namespace Demo\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity(repositoryClass="Sciviz\UserBundle\Entity\UserRepository")
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @ORM\Column(name="first_name", type="string", length=255, nullable=true) */
protected $first_name;
..................
答案 2 :(得分:0)
您的列名“USER_ID”可能区分大小写。
/**
* @ORM\Entity
* @ORM\Table(name="user-table")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="USER_ID")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}