У меня проблема с запросом в доктрине, я начал использовать Symfony недавно для продолжения старого проекта в Symfony, и теперь я хочу узнать его. я начинаю объяснять из БД и я пишу только те поля, которые интересуют меня:Учреждение доктрины Symfony Query
пользователя (идентификатор, имя, фамилия, Phat)
user_reference (идентификатор, id_user [FOREIGN KEY ID FROM пользователь ], id_user_referenced [ИНОСТРАННОЙ идентификатор ключа ОТ пользователя])
Это запрос:
$id_user = $user->getId();
$query = $em->createQueryBuilder()
->select('ur','uu')
->from('DtEcBundle:UserReferences', 'ur')
->innerJoin("ur.id_user","uu")
->where("ur.id_user = :id_user")
->setParameter("id_user",$id_user)
->getQuery();
$userpyramid = $query->getResult();
я печатаю в моем файле веточку id_user_referenced, но я бы печатать тоже «имя, фамилию и путь» из таблицы USER
Для печати id_user_referenced в UserReferences Entity Существует этот код:
/**
* Set id_user_referenced
*
* @param \Dt\EcBundle\Entity\User $idUserReferenced
* @return UserReferences
*/
public function setIdUserReferenced(\Dt\EcBundle\Entity\User $idUserReferenced = null) {
$this->id_user_referenced = $idUserReferenced;
return $this;
}
/**
* Get id_user_referenced
*
* @return \Dt\EcBundle\Entity\User
*/
public function getIdUserReferenced() {
return $this->id_user_referenced;
}
Transform ряд как идентификатор строки в объект пользователя с:
public function __toString(){
return strval($this->id);
}
Теперь, если я добавить в мой запрос в это выбрать:
->select('ur','uu.path')
Symfony отправить мне сообщение об ошибке:
Key "idUserReferenced" for array with keys "0, path" does not exist in DtEcBundle:Profilo:digitalpr-profile.html.twig at line 40
Почему ?? Как я могу это решить?
UserReferences.php
namespace Dt\EcBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* UserReferences
*
* @ORM\Table(name="user_references" ,uniqueConstraints= {@ORM\UniqueConstraint(name="recension_unique", columns={"id_user", "id_user_referenced"})})
* @ORM\Entity(repositoryClass="Dt\EcBundle\Entity\UserReferencesRepository")
*/ class UserReferences {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @var Dt\EcBundle\Entity\User
* @ORM\ManyToOne(targetEntity="Dt\EcBundle\Entity\User", inversedBy="references")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id")
*/
private $id_user;
/**
* @ORM\ManyToOne(targetEntity="Dt\EcBundle\Entity\User")
* @ORM\JoinColumn(name="id_user_referenced", referencedColumnName="id")
* */
private $id_user_referenced;
/**
*
* @var string
* @ORM\Column(name="reference", type="text", nullable=false,unique=false);
*/
private $reference;
/**
* Get id
*
* @return integer
*/
public function getId() {
return $this->id;
}
/**
* Set reference
*
* @param string $reference
* @return UserReferences
*/
public function setReference($reference) {
$this->reference = $reference;
return $this;
}
/**
* Get reference
*
* @return string
*/
public function getReference() {
return $this->reference;
}
/**
* Set id_user
*
* @param \Dt\EcBundle\Entity\User $idUser
* @return UserReferences
*/
public function setIdUser(\Dt\EcBundle\Entity\User $idUser = null) {
$this->id_user = $idUser;
return $this;
}
/**
* Get id_user
*
* @return \Dt\EcBundle\Entity\User
*/
public function getIdUser() {
return $this->id_user;
}
/**
* Set id_user_referenced
*
* @param \Dt\EcBundle\Entity\User $idUserReferenced
* @return UserReferences
*/
public function setIdUserReferenced(\Dt\EcBundle\Entity\User $idUserReferenced = null) {
$this->id_user_referenced = $idUserReferenced;
return $this;
}
/**
* Get id_user_referenced
*
* @return \Dt\EcBundle\Entity\User
*/
public function getIdUserReferenced() {
return $this->id_user_referenced;
}
}
User.php
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=false, nullable=false)
* @Assert\NotBlank(message="user.name.not.blank")
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.name.not.min",
* maxMessage="user.name.not.max")
*/
protected $name;
/**
* @var string
*
* @ORM\Column(name="surname", type="string", length=255, unique=false, nullable=false)
* @Assert\NotBlank(message="user.surname.not.blank")
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.surname.not.min",
* maxMessage="user.surname.not.max")
*/
protected $surname;
/**
* @var \DateTime
* @ORM\Column(name="borndate", type="datetime",unique=false,nullable=false)
*/
protected $borndate;
/**
*
* @var string
* @ORM\Column(name="tel", type="string",length=50, unique=true,nullable=true)
* @Assert\Regex("/[0-9]/")
*/
protected $tel;
/**
*
* @var string
* @ORM\Column(name="city", type="string",length=255,unique=false,nullable=true)
* @Assert\NotBlank(message="user.expert.city.not.blank",groups={"Expert"})
* @Assert\NotBlank(message="user.expert.city.not.blank",groups={"ExpertProfile"})
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.expert.city.not.min",
* maxMessage="user.expert.city.not.max", groups={"Expert"})
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.expert.city.not.min",
* maxMessage="user.expert.city.not.max", groups={"ExpertProfile"})
*/
protected $city;
/**
*
* @var string
* @ORM\Column(name="street", type="string",length=255,unique=false,nullable=true)
* @Assert\NotBlank(message="user.expert.street.not.blank",groups={"Expert"})
* @Assert\NotBlank(message="user.expert.street.not.blank",groups={"ExpertProfile"})
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.expert.street.not.min",
* maxMessage="user.expert.street.not.max", groups={"Expert"})
* @Assert\Length(
* min=2,
* max=150,
* minMessage="user.expert.street.not.min",
* maxMessage="user.expert.street.not.max", groups={"ExpertProfile"})
*/
protected $street;
/**
*
* @var type
*
* @Assert\File(
* maxSize = "1024k",
* mimeTypes = {"image/gif","image/jpeg","image/pjpeg","image/png"},
* mimeTypesMessage = "user.image.mimetypes",
* maxSizeMessage = "user.image.maxsize"
*)
* @Assert\NotBlank(message="user.expert.mandatory.photo",groups={"Expert"})
*
*/
protected $photo;
/**
* @ORM\Column(name="photo_path",type="string", length=255, nullable=true,unique=true)
*/
protected $path;
/**
* Membri per la gestione dei file
*
*/
Можете ли вы показать свою веточку? Я имею в виду ** DtEcBundle: Profilo: digitalpr-profile.html.twig в строке 40 ** –
Можете ли вы показать сопоставления этих объектов DtEcBundle: UserReferences и DtEcBundle: User? –
По крайней мере одна возможная проблема, которую я вижу, - это innerJoin («ur.id_user», «uu»). Вероятно, это должно быть innerJoin («ur.user», «uu») - вы указали имя свойства объекта, а не поле в базе данных. Но мы должны видеть отображения, чтобы быть уверенными –