Я пытаюсь получить доступ к внешнему ключу, хранящемуся в сущности, используя doctrine и querybuilder.
Я получил сущность с именем User, которая связана с другой сущностью, называемой Client, с отношением ManyToOne.Я хотел создать построитель запросов, который бы вывел мне поле client_id в таблице пользователей, которое соответствует идентификатору клиента.
Мой пользовательский объект:
/**
* AppBundle\EntityAppBundle\Entity\User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*/
class User extends FOSUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*
*
*/
private $nom;
/**
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Etablissement", inversedBy="users")
*
*/
private $etablissements;
/**
*
* @ORM\ManyToOne(targetEntity="Client", inversedBy="users")
*
*/
private $client;
Мой клиентский объект:
/**
* AppBundle\EntityAppBundle\Entity\Client
*
* @ORM\Table(name="client")
* @ORM\Entity()
*/
class Client{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*
*
*/
private $nom;
/**
* @var string
*
* @ORM\Column(name="adresse", type="string", length=255)
*
*
*/
/**
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="client",
cascade={"persist"}, orphanRemoval=true)
*
*/
private $users;
В моей базе данных у моего пользователя сущности есть client_id в столбце внешнего ключа.
Так что в моем queryBuilder в UserRepository я делаю:
public function findClientIdViaUserId($myUserId, $myClientID)
{
return $this->createQueryBuilder('e')
->from('AppBundle:User', 'i')
->join('AppBundle:Client', 'c')
->where('c.id = :myClientID')
->andWhere('e.id = :myUserId')
->setParameter('myuserId', $myUserId)
->setParameter('myClientId', $myClientID)
->getQuery()
->getOneOrNullResult();
}
Я ожидаю получитьидентификатор client_id для user_id.Допустим, я хотел получить один client_id с user_id с именем 1. С моим queryBuilder я получил ошибку вроде: [Синтаксическая ошибка], строка 0, столбец 67: Ошибка: Ожидаемый Doctrine \ ORM \ Query \ Lexer :: T_WITH, получил ', '
Как мне обработать получение client_id от user_id?
Спасибо за ваши ответы!