Symfony2.3 Unrecognized field ORMexception - php

I'm having a similiar issue to Symfony2 Doctrine Unrecognized field:
But mine doesn't have the same solution
I have an entity "category" I'm trying to find all the categories with the attribute "activo" set to true but it gives me the error in the title
I've done php app/console doctrine:generate:entities [path] --no-backup and php app/console doctrine:schema:update --force
My table in my database is updated just as my entity.
<?php
namespace ROSHKA\BBVA\SitioExperience\FrontendBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Expcategorias
*/
class Expcategorias
{
/**
* #var integer
*/
private $id;
/**
* #var string
*/
private $nombre;
/**
* #var string
*/
private $descripcion;
/**
* #var \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes
*/
private $imagen;
/**
* #var string
*/
private $titulo;
/**
* #var boolean
*/
private $activo;
/**
* #var string
*/
private $colorfondo;
/**
* #var \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes
*/
private $imagenfondo;
/**
* Get id
*
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set nombre
*
* #param string $nombre
* #return Expcategorias
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* #return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Set descripcion
*
* #param string $descripcion
* #return Expcategorias
*/
public function setDescripcion($descripcion)
{
$this->descripcion = $descripcion;
return $this;
}
/**
* Get descripcion
*
* #return string
*/
public function getDescripcion()
{
return $this->descripcion;
}
/**
* Set imagen
*
* #param \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes $imagen
* #return Expcategorias
*/
public function setImagen(\ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes $imagen = null)
{
$this->imagen = $imagen;
return $this;
}
/**
* Get imagen
*
* #return \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes
*/
public function getImagen()
{
return $this->imagen;
}
public function __toString()
{
return $this->getNombre();
}
/**
* Set titulo
*
* #param string $titulo
* #return Expcategorias
*/
public function setTitulo($titulo)
{
$this->titulo = $titulo;
return $this;
}
/**
* Get titulo
*
* #return string
*/
public function getTitulo()
{
return $this->titulo;
}
/**
* Set activo
*
* #param boolean $activo
* #return Expcategorias
*/
public function setActivo($activo)
{
$this->activo = $activo;
return $this;
}
/**
* Get activo
*
* #return boolean
*/
public function getActivo()
{
return $this->activo;
}
/**
* Set colorfondo
*
* #param string $colorfondo
* #return Expcategorias
*/
public function setColorfondo($colorfondo)
{
$this->colorfondo = $colorfondo;
return $this;
}
/**
* Get colorfondo
*
* #return string
*/
public function getColorfondo()
{
return $this->colorfondo;
}
/**
* Set imagenfondo
*
* #param \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes $imagenfondo
* #return Expcategorias
*/
public function setImagenfondo(\ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes $imagenfondo = null)
{
$this->imagenfondo = $imagenfondo;
return $this;
}
/**
* Get imagenfondo
*
* #return \ROSHKA\BBVA\SitioUniversos\ImagenesBundle\Entity\Imagenes
*/
public function getImagenfondo()
{
return $this->imagenfondo;
}
}
This is what I use to call it in my controller. When I debug and set a breakpoint here i can see in the expressions sections that my category only has three columns instead of the 9 columns that should have. I don't know what else to do.
$repo = $this->getDoctrine()->getRepository('ROSHKABBVASitioExperienceFrontendBundle:Expcategorias');
$categorias = $repo->findBy(array('activo'=>true));

After thinking for a while I remembered I've installed memcached, then all I did was restart memcached in the task manager, then my project took all the new values.

Related

How annotation #groups for the sluggable column

I'm working in symfony 3.3:
I need to add the #Groups annotation to the slug field (created using ORMBehaviors\Sluggable\Sluggable) so I can pass this field through other entities that I will specify in the Groups.
How can I do this?
this is the entity 'foo':
/**
* #var int
*
* #ORM\Id
* #ORM\GeneratedValue
* #ORM\Column(type="integer")
*
* #Groups({"advertisingSpace"})
*/
private $id;
/**
* #var string
*
* #ORM\Column(type="string", length=4)
*
* #Groups({"advertisingSpace"})
*/
private $code;
/**
* #var string
*
* #ORM\Column(type="string", length=255)
*
* #Groups({"advertisingSpace"})
*/
private $description;
/**
* #Vich\UploadableField(mapping="advertisingspacecategory_icon", fileNameProperty="icon")
*
* #var File
*/
private $iconFile;
/**
* #var string
*
* #ORM\Column(type="string", length=255)
*
* #Groups({"advertisingSpace"})
*/
private $icon;
/**
* #var array
*
* #ORM\OneToMany(
* targetEntity="AppBundle\Entity\AdvertisingSpace",
* mappedBy="category"
* )
*/
private $advertisingSpaces;
/**
* #return int
*/
public function getId()
{
return $this->id;
}
/**
* #return string
*/
public function getIcon()
{
return $this->icon;
}
/**
* #param string $icon
*
* #return AdvertisingSpaceCategory
*/
public function setIcon($icon)
{
$this->icon = $icon;
return $this;
}
/**
* #param File|\Symfony\Component\HttpFoundation\File\UploadedFile $iconFile
*
* #return AdvertisingSpaceCategory
*/
public function setIconFile(File $iconFile = null)
{
$this->iconFile = $iconFile;
if ($iconFile) {
$this->updatedAt = new \DateTimeImmutable();
}
return $this;
}
/**
* #return File|null
*/
public function getIconFile()
{
return $this->iconFile;
}
/**
* #param int $id
*
* #return AdvertisingSpaceCategory
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* #return string
*/
public function getCode()
{
return $this->code;
}
/**
* #param string $code
*
* #return AdvertisingSpaceCategory
*/
public function setCode($code)
{
$this->code = $code;
return $this;
}
/**
* #return array
*/
public function getAdvertisingSpaces()
{
return $this->advertisingSpaces;
}
/**
* #param array $advertisingSpaces
*
* #return AdvertisingSpaceCategory
*/
public function setAdvertisingSpaces($advertisingSpaces)
{
$this->advertisingSpaces = $advertisingSpaces;
return $this;
}
/**
* #return string
*/
public function getDescription()
{
return $this->description;
}
/**
* #param string $description
*
* #return $this
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* #return array
*/
public function getSluggableFields()
{
return [ 'slug' ];
}
/**
* #param string $values
*
* #return string
*/
public function generateSlugValue($values)
{
return implode('-', $values);
}
not having the private slug declaration as I can attribute the #groups annotation to?
You should install the JMS Serializer Bundle and use the #VirtualProperty annotation on your own getSlug() method like the following
/**
* #VirtualProperty
* #Groups({"advertisingSpace"})
*/
public function getSlug()
{
return parent::getSlug();
}
I solved it anyway by creating a new string variable (Eg "SlugName"):
/**
* #var string
*
* #Groups({"advertisingSpace"})
*/
private $slugName;
where I inserted the Groups annotation and which returns the original 'slug' field from its getter:
/**
* # return string
*/
public function getSlugName(): string
{
return $this->slug;
}

Methods not found so i cant get Events from DB

Im using adesigns/calendar-bundle to create a calendar on my symfony project.
I Can't get events from the DB when i access fc-load-events, This is my entity listener :
class CalendarEventListener
{
private $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function loadEvents(CalendarEvent $calendarEvent)
{
$startDate = $calendarEvent->getStartDatetime();
$endDate = $calendarEvent->getEndDatetime();
// The original request so you can get filters from the calendar
// Use the filter in your query for example
$request = $calendarEvent->getRequest();
$filter = $request->get('filter');
// load events using your custom logic here,
// for instance, retrieving events from a repository
$companyEvents = $this->entityManager->getRepository('CMRBundle:EventEntity')
->createQueryBuilder('company_events')
->where('company_events.event_datetime BETWEEN :startDate and :endDate')
->setParameter('startDate', $startDate->format('Y-m-d H:i:s'))
->setParameter('endDate', $endDate->format('Y-m-d H:i:s'))
->getQuery()->getResult();
// $companyEvents and $companyEvent in this example
// represent entities from your database, NOT instances of EventEntity
// within this bundle.
//
// Create EventEntity instances and populate it's properties with data
// from your own entities/database values.
foreach($companyEvents as $companyEvent) {
// create an event with a start/end time, or an all day event
if ($companyEvent->getAllDayEvent() === false) {
$eventEntity = new EventEntity($companyEvent->getTitle(), $companyEvent->getStartDatetime(), $companyEvent->getEndDatetime());
} else {
$eventEntity = new EventEntity($companyEvent->getTitle(), $companyEvent->getStartDatetime(), null, true);
}
//optional calendar event settings
$eventEntity->setAllDay(true); // default is false, set to true if this is an all day event
$eventEntity->setBgColor('#FF0000'); //set the background color of the event's label
$eventEntity->setFgColor('#FFFFFF'); //set the foreground color of the event's label
$eventEntity->setUrl('http://www.google.com'); // url to send user to when event label is clicked
$eventEntity->setCssClass('my-custom-class'); // a custom class you may want to apply to event labels
//finally, add the event to the CalendarEvent for displaying on the calendar
$calendarEvent->addEvent($eventEntity);
}
}
}
This is the error i get :
if ($companyEvent->getAllDayEvent() === false) {
$eventEntity = new EventEntity($companyEvent->getTitle(), $companyEvent->getStartDatetime(), $companyEvent->getEndDatetime());
} else {
$eventEntity = new EventEntity($companyEvent->getTitle(), $companyEvent->getStartDatetime(), null, true);
}
All the methods in evententity are not found : `getAllDayEvent(), getTitle(), getStartDatetime().
I have a public fonction getDaterdv in my entity :
(Ive changed the entity) to RDV :
<?php
namespace CMRBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* RDV
*
* #ORM\Table(name="r_d_v")
* #ORM\Entity(repositoryClass="CMRBundle\Repository\RDVRepository")
*/
class RDV
{
/**
* #var int
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* #var \DateTime
*
* #ORM\Column(name="datecrea", type="datetime")
*/
private $datecrea;
/**
* #ORM\Column(name="published", type="boolean")
*/
private $published = true;
/**
* #var \DateTime
*
* #ORM\Column(name="daterdv", type="datetime")
*/
private $daterdv;
/**
* #var string
*
* #ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* #var string
*
* #ORM\Column(name="agentname", type="string", length=255)
*/
private $agentname;
/**
* #var string
*
* #ORM\Column(name="qualif", type="string", length=255)
*/
private $qualif;
/**
* #var int
*
* #ORM\Column(name="agentid", type="integer")
*/
private $agentid;
/**
* #var string
*
* #ORM\Column(name="company", type="string", length=255)
*/
private $company;
/**
* #var string
*
* #ORM\Column(name="comname", type="string", length=255)
*/
private $comname;
/**
* #var text
*
* #ORM\Column(name="content", type="text")
*/
private $content;
/**
* #var text
*
* #ORM\Column(name="adresse", type="text")
*/
private $adresse;
/**
* #var text
*
* #ORM\Column(name="ville", type="text")
*/
private $ville;
/**
* #var text
*
* #ORM\Column(name="telfixe", type="text")
*/
private $telfixe;
/**
* #var text
*
* #ORM\Column(name="telpor", type="text")
*/
private $telpor;
/**
* #var text
*
* #ORM\Column(name="tarif", type="text")
*/
private $tarif;
/**
* #var text
*
* #ORM\Column(name="support", type="text")
*/
private $support;
public function __construct()
{
$this->datecrea = new \Datetime();
$this->daterdv = new \DateTime();
}
/**
* Get id
*
* #return int
*/
public function getId()
{
return $this->id;
}
/**
* Set datecrea
*
* #param \DateTime $datecrea
*
* #return RDV
*/
public function setDatecrea($datecrea)
{
$this->datecrea = $datecrea;
return $this;
}
/**
* Get datecrea
*
* #return \DateTime
*/
public function getDatecrea()
{
return $this->datecrea;
}
/**
* Set daterdv
*
* #param \DateTime $daterdv
*
* #return RDV
*/
public function setDaterdv($daterdv)
{
$this->daterdv = $daterdv;
return $this;
}
/**
* Get daterdv
*
* #return \DateTime
*/
public function getDaterdv()
{
return $this->daterdv;
}
/**
* Set title
*
* #param string $title
*
* #return RDV
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* #return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set agentid
*
* #param integer $agentid
*
* #return RDV
*/
public function setAgentid($agentid)
{
$this->agentid = $agentid;
return $this;
}
/**
* Get agentid
*
* #return int
*/
public function getAgentid()
{
return $this->agentid;
}
/**
* Set company
*
* #param string $company
*
* #return RDV
*/
public function setCompany($company)
{
$this->company = $company;
return $this;
}
/**
* Get company
*
* #return string
*/
public function getCompany()
{
return $this->company;
}
/**
* Set content
*
* #param string $content
*
* #return RDV
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content
*
* #return string
*/
public function getContent()
{
return $this->content;
}
/**
* Set published
*
* #param boolean $published
*
* #return RDV
*/
public function setPublished($published)
{
$this->published = $published;
return $this;
}
/**
* Get published
*
* #return boolean
*/
public function getPublished()
{
return $this->published;
}
/**
* Set agentname
*
* #param string $agentname
*
* #return RDV
*/
public function setAgentname($agentname)
{
$this->agentname = $agentname;
return $this;
}
/**
* Get agentname
*
* #return string
*/
public function getAgentname()
{
return $this->agentname;
}
/**
* Set adresse
*
* #param string $adresse
*
* #return RDV
*/
public function setAdresse($adresse)
{
$this->adresse = $adresse;
return $this;
}
/**
* Get adresse
*
* #return string
*/
public function getAdresse()
{
return $this->adresse;
}
/**
* Set ville
*
* #param string $ville
*
* #return RDV
*/
public function setVille($ville)
{
$this->ville = $ville;
return $this;
}
/**
* Get ville
*
* #return string
*/
public function getVille()
{
return $this->ville;
}
/**
* Set telfixe
*
* #param string $telfixe
*
* #return RDV
*/
public function setTelfixe($telfixe)
{
$this->telfixe = $telfixe;
return $this;
}
/**
* Get telfixe
*
* #return string
*/
public function getTelfixe()
{
return $this->telfixe;
}
/**
* Set telpor
*
* #param string $telpor
*
* #return RDV
*/
public function setTelpor($telpor)
{
$this->telpor = $telpor;
return $this;
}
/**
* Get telpor
*
* #return string
*/
public function getTelpor()
{
return $this->telpor;
}
/**
* Set tarif
*
* #param string $tarif
*
* #return RDV
*/
public function setTarif($tarif)
{
$this->tarif = $tarif;
return $this;
}
/**
* Get tarif
*
* #return string
*/
public function getTarif()
{
return $this->tarif;
}
/**
* Set support
*
* #param string $support
*
* #return RDV
*/
public function setSupport($support)
{
$this->support = $support;
return $this;
}
/**
* Get support
*
* #return string
*/
public function getSupport()
{
return $this->support;
}
/**
* Set horaire
*
* #param string $horaire
*
* #return RDV
*/
public function setHoraire($horaire)
{
$this->horaire = $horaire;
return $this;
}
/**
* Get horaire
*
* #return string
*/
public function getHoraire()
{
return $this->horaire;
}
/**
* Set comname
*
* #param string $comname
*
* #return RDV
*/
public function setComname($comname)
{
$this->comname = $comname;
return $this;
}
/**
* Get comname
*
* #return string
*/
public function getComname()
{
return $this->comname;
}
/**
* Set qualif
*
* #param string $qualif
*
* #return RDV
*/
public function setQualif($qualif)
{
$this->qualif = $qualif;
return $this;
}
/**
* Get qualif
*
* #return string
*/
public function getQualif()
{
return $this->qualif;
}
}
Thanks for helping me
I have a public fonction getDaterdv in my entity :
(Ive changed the entity) to RDV :
<?php
namespace CMRBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* RDV
*
* #ORM\Table(name="r_d_v")
* #ORM\Entity(repositoryClass="CMRBundle\Repository\RDVRepository")
*/
class RDV
{
/**
* #var int
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* #var \DateTime
*
* #ORM\Column(name="datecrea", type="datetime")
*/
private $datecrea;
/**
* #ORM\Column(name="published", type="boolean")
*/
private $published = true;
/**
* #var \DateTime
*
* #ORM\Column(name="daterdv", type="datetime")
*/
private $daterdv;
/**
* #var string
*
* #ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* #var string
*
* #ORM\Column(name="agentname", type="string", length=255)
*/
private $agentname;
/**
* #var string
*
* #ORM\Column(name="qualif", type="string", length=255)
*/
private $qualif;
/**
* #var int
*
* #ORM\Column(name="agentid", type="integer")
*/
private $agentid;
/**
* #var string
*
* #ORM\Column(name="company", type="string", length=255)
*/
private $company;
/**
* #var string
*
* #ORM\Column(name="comname", type="string", length=255)
*/
private $comname;
/**
* #var text
*
* #ORM\Column(name="content", type="text")
*/
private $content;
/**
* #var text
*
* #ORM\Column(name="adresse", type="text")
*/
private $adresse;
/**
* #var text
*
* #ORM\Column(name="ville", type="text")
*/
private $ville;
/**
* #var text
*
* #ORM\Column(name="telfixe", type="text")
*/
private $telfixe;
/**
* #var text
*
* #ORM\Column(name="telpor", type="text")
*/
private $telpor;
/**
* #var text
*
* #ORM\Column(name="tarif", type="text")
*/
private $tarif;
/**
* #var text
*
* #ORM\Column(name="support", type="text")
*/
private $support;
public function __construct()
{
$this->datecrea = new \Datetime();
$this->daterdv = new \DateTime();
}
/**
* Get id
*
* #return int
*/
public function getId()
{
return $this->id;
}
/**
* Set datecrea
*
* #param \DateTime $datecrea
*
* #return RDV
*/
public function setDatecrea($datecrea)
{
$this->datecrea = $datecrea;
return $this;
}
/**
* Get datecrea
*
* #return \DateTime
*/
public function getDatecrea()
{
return $this->datecrea;
}
/**
* Set daterdv
*
* #param \DateTime $daterdv
*
* #return RDV
*/
public function setDaterdv($daterdv)
{
$this->daterdv = $daterdv;
return $this;
}
/**
* Get daterdv
*
* #return \DateTime
*/
public function getDaterdv()
{
return $this->daterdv;
}
/**
* Set title
*
* #param string $title
*
* #return RDV
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* #return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set agentid
*
* #param integer $agentid
*
* #return RDV
*/
public function setAgentid($agentid)
{
$this->agentid = $agentid;
return $this;
}
/**
* Get agentid
*
* #return int
*/
public function getAgentid()
{
return $this->agentid;
}
/**
* Set company
*
* #param string $company
*
* #return RDV
*/
public function setCompany($company)
{
$this->company = $company;
return $this;
}
/**
* Get company
*
* #return string
*/
public function getCompany()
{
return $this->company;
}
/**
* Set content
*
* #param string $content
*
* #return RDV
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content
*
* #return string
*/
public function getContent()
{
return $this->content;
}
/**
* Set published
*
* #param boolean $published
*
* #return RDV
*/
public function setPublished($published)
{
$this->published = $published;
return $this;
}
/**
* Get published
*
* #return boolean
*/
public function getPublished()
{
return $this->published;
}
/**
* Set agentname
*
* #param string $agentname
*
* #return RDV
*/
public function setAgentname($agentname)
{
$this->agentname = $agentname;
return $this;
}
/**
* Get agentname
*
* #return string
*/
public function getAgentname()
{
return $this->agentname;
}
/**
* Set adresse
*
* #param string $adresse
*
* #return RDV
*/
public function setAdresse($adresse)
{
$this->adresse = $adresse;
return $this;
}
/**
* Get adresse
*
* #return string
*/
public function getAdresse()
{
return $this->adresse;
}
/**
* Set ville
*
* #param string $ville
*
* #return RDV
*/
public function setVille($ville)
{
$this->ville = $ville;
return $this;
}
/**
* Get ville
*
* #return string
*/
public function getVille()
{
return $this->ville;
}
/**
* Set telfixe
*
* #param string $telfixe
*
* #return RDV
*/
public function setTelfixe($telfixe)
{
$this->telfixe = $telfixe;
return $this;
}
/**
* Get telfixe
*
* #return string
*/
public function getTelfixe()
{
return $this->telfixe;
}
/**
* Set telpor
*
* #param string $telpor
*
* #return RDV
*/
public function setTelpor($telpor)
{
$this->telpor = $telpor;
return $this;
}
/**
* Get telpor
*
* #return string
*/
public function getTelpor()
{
return $this->telpor;
}
/**
* Set tarif
*
* #param string $tarif
*
* #return RDV
*/
public function setTarif($tarif)
{
$this->tarif = $tarif;
return $this;
}
/**
* Get tarif
*
* #return string
*/
public function getTarif()
{
return $this->tarif;
}
/**
* Set support
*
* #param string $support
*
* #return RDV
*/
public function setSupport($support)
{
$this->support = $support;
return $this;
}
/**
* Get support
*
* #return string
*/
public function getSupport()
{
return $this->support;
}
/**
* Set horaire
*
* #param string $horaire
*
* #return RDV
*/
public function setHoraire($horaire)
{
$this->horaire = $horaire;
return $this;
}
/**
* Get horaire
*
* #return string
*/
public function getHoraire()
{
return $this->horaire;
}
/**
* Set comname
*
* #param string $comname
*
* #return RDV
*/
public function setComname($comname)
{
$this->comname = $comname;
return $this;
}
/**
* Get comname
*
* #return string
*/
public function getComname()
{
return $this->comname;
}
/**
* Set qualif
*
* #param string $qualif
*
* #return RDV
*/
public function setQualif($qualif)
{
$this->qualif = $qualif;
return $this;
}
/**
* Get qualif
*
* #return string
*/
public function getQualif()
{
return $this->qualif;
}
}
It should be name of the entity field, but not the name of the database column specified in line
->where('company_events.event_datetime BETWEEN :startDate and :endDate')
so check, maybe it should be like
->where('company_events.eventDatetime BETWEEN :startDate and :endDate')
assuming that you are using camel case on your EventEntity field names using symfony coding style standards.
=============================
UPDATE
=============================
Now, when you posted your entity it is clear that it is not the one you trying to fetch from the database via repository.
$companyEvents = $this->entityManager->getRepository('CMRBundle:EventEntity')
->createQueryBuilder('company_events')
->where('company_events.event_datetime BETWEEN :startDate and :endDate')
->setParameter('startDate', $startDate->format('Y-m-d H:i:s'))
->setParameter('endDate', $endDate->format('Y-m-d H:i:s'))
->getQuery()->getResult();
Here your entity manager retrieving "EventEntity" instances from repository with name "CMRBundle:EventEntity", but to us you showed "RDV" and "CMRBundle\Repository\RDVRepository" to which it belongs to. As far as I understand from the part of the scope you shown - when some calendar event is raised you want to obtain all "event entities" from database which are in bounds of field values set in those event object that you passes to the listener. But it's unclear whether those RDV object that you have shown represent those "event entities" that you want to get from database. For now it looks like so and code related to "CMRBundle:EventEntity" just looks like some example code that your forgot to change. So, please, try to describe us the task and its context more carefully and tell if my assumption is right or wrong.

Symfony2 After form submit entity not extended on base entity

In editAction method of controller I tried to edit existed entities in class table inheritance.
But after form submit I get error:
Neither the property "id" nor one of the methods
"addId()"/"removeId()", "setId()", "id()", "__set()" or "__call()"
exist and have public access in class "AdBundle\Entity\AdFlat".
Why AdFlat entity not extended of AdBase entity?
Base entity:
<?php
namespace AdBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* AdBase
*
* #ORM\Table(name="ad_base")
* #ORM\Entity(repositoryClass="AdBundle\Repository\AdBaseRepository")
* #ORM\HasLifecycleCallbacks()
* #ORM\InheritanceType("JOINED")
* #ORM\DiscriminatorColumn(name="discr", type="string")
* #ORM\DiscriminatorMap({
"flat" = "AdFlat"
* })
*/
abstract class AdBase
{
/**
* #var int
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* #var string
*
* #ORM\Column(name="author", type="string", length=255)
*/
private $author;
/**
* #ORM\ManyToOne(targetEntity="AdBundle\Entity\AdCategory")
*/
private $category;
/**
* #ORM\Column(type="string")
* #Assert\NotBlank(message="Field Location should not be blank")
*/
private $location;
/**
* #var string
*
* #ORM\Column(name="title", type="string", length=255)
* #Assert\NotBlank(message="Not specified Title")
*/
private $title;
/**
* #var string
*
* #ORM\Column(name="description", type="text", nullable=true)
* #Assert\NotBlank(message="Not specified Description")
*/
private $description;
/**
* #ORM\OneToMany(targetEntity="AdBundle\Entity\AdPhoto", mappedBy="ad")
*/
private $photos;
/**
* #ORM\Column(type="float")
* #Assert\NotBlank()
*/
private $price;
/**
* #ORM\ManyToOne(targetEntity="AdBundle\Entity\AdPriceType")
*/
private $priceType;
/**
* #var \DateTime
*
* #ORM\Column(name="createdAt", type="datetime")
*/
private $createdAt;
/**
* #var string
*
* #ORM\Column(name="updatedAt", type="datetime")
*/
private $updatedAt;
/**
* #var bool
*
* #ORM\Column(name="visible", type="boolean")
*/
private $visible = false;
/**
* #ORM\Column(type="boolean")
*/
private $active = true;
/**
* Get id
*
* #return int
*/
public function getId()
{
return $this->id;
}
/**
* Set author
*
* #param string $author
*
* #return AdBase
*/
public function setAuthor($author)
{
$this->author = $author;
return $this;
}
/**
* Get author
*
* #return string
*/
public function getAuthor()
{
return $this->author;
}
/**
* #return mixed
*/
public function getCategory()
{
return $this->category;
}
/**
* #param mixed $category
*/
public function setCategory($category)
{
$this->category = $category;
}
/**
* #return mixed
*/
public function getLocation()
{
return $this->location;
}
/**
* #param mixed $location
*/
public function setLocation($location)
{
$this->location = $location;
}
/**
* Set title
*
* #param string $title
*
* #return AdBase
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* #return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set description
*
* #param string $description
*
* #return AdBase
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* #return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set photos
*
* #param string $photos
*
* #return AdBase
*/
public function setPhotos($photos)
{
$this->photos = $photos;
return $this;
}
/**
* Get photos
*
* #return string
*/
public function getPhotos()
{
return $this->photos;
}
/**
* #return mixed
*/
public function getPrice()
{
return $this->price;
}
/**
* #param mixed $price
*/
public function setPrice($price)
{
$this->price = $price;
}
/**
* #return mixed
*/
public function getPriceType()
{
return $this->priceType;
}
/**
* #param mixed $priceType
*/
public function setPriceType($priceType)
{
$this->priceType = $priceType;
}
/**
* Set createdAt
*
* #param \DateTime $createdAt
*
* #return AdBase
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* #return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedAt
*
* #param string $updatedAt
*
* #return AdBase
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* #return string
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Set visible
*
* #param boolean $visible
*
* #return AdBase
*/
public function setVisible($visible)
{
$this->visible = $visible;
return $this;
}
/**
* Get visible
*
* #return bool
*/
public function getVisible()
{
return $this->visible;
}
/**
* #return mixed
*/
public function getActive()
{
return $this->active;
}
/**
* #param mixed $active
*/
public function setActive($active)
{
$this->active = $active;
}
/**
* #ORM\PrePersist()
*/
public function prePersist()
{
$this->author = 'voodoo';
$this->createdAt = new \DateTime('now', new \DateTimeZone('UTC'));
$this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
$this->location = 'Donetsk';
}
/**
* #ORM\PreUpdate()
*/
public function preUpdate()
{
$this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
}
}
Extended entity:
<?php
namespace AdBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* AdFlat
*
* #ORM\Table(name="ad_flat")
* #ORM\Entity(repositoryClass="AdBundle\Repository\AdFlatRepository")
*/
class AdFlat extends AdBase
{
/**
* #var integer
*
* #ORM\Column(type="integer")
* #Assert\NotBlank(message="ad_flat.rooms.not_blank")
*/
private $rooms;
/**
* #var float
*
* #ORM\Column(name="square", type="float", nullable=true)
*/
private $square;
/**
* #var float
*
* #ORM\Column(name="liveSquare", type="float", nullable=true)
*/
private $liveSquare;
/**
* #var float
*
* #ORM\Column(type="float", nullable=true)
*/
private $kitchenSquare;
/**
* #var int
*
* #ORM\Column(name="floor", type="integer")
*/
private $floor;
/**
* #var int
*
* #ORM\Column(name="floors", type="integer")
*/
private $floors;
/**
* #var string
*
* #ORM\ManyToOne(targetEntity="AdBundle\Entity\AdWallType")
*/
private $wallType;
/**
* #ORM\ManyToOne(targetEntity="AdBundle\Entity\AdWCType")
*/
private $wcType;
/**
* #return mixed
*/
public function getRooms()
{
return $this->rooms;
}
/**
* #param mixed $rooms
*/
public function setRooms($rooms)
{
$this->rooms = $rooms;
}
/**
* Set square
*
* #param float $square
*
* #return AdFlat
*/
public function setSquare($square)
{
$this->square = $square;
return $this;
}
/**
* Get square
*
* #return float
*/
public function getSquare()
{
return $this->square;
}
/**
* Set liveSquare
*
* #param float $liveSquare
*
* #return AdFlat
*/
public function setLiveSquare($liveSquare)
{
$this->liveSquare = $liveSquare;
return $this;
}
/**
* Get liveSquare
*
* #return float
*/
public function getLiveSquare()
{
return $this->liveSquare;
}
/**
* #return float
*/
public function getKitchenSquare()
{
return $this->kitchenSquare;
}
/**
* #param float $kitchenSquare
*/
public function setKitchenSquare($kitchenSquare)
{
$this->kitchenSquare = $kitchenSquare;
}
/**
* Set floor
*
* #param integer $floor
*
* #return AdFlat
*/
public function setFloor($floor)
{
$this->floor = $floor;
return $this;
}
/**
* Get floor
*
* #return int
*/
public function getFloor()
{
return $this->floor;
}
/**
* Set floors
*
* #param integer $floors
*
* #return AdFlat
*/
public function setFloors($floors)
{
$this->floors = $floors;
return $this;
}
/**
* Get floors
*
* #return int
*/
public function getFloors()
{
return $this->floors;
}
/**
* Set wallType
*
* #param string $wallType
*
* #return AdFlat
*/
public function setWallType($wallType)
{
$this->wallType = $wallType;
return $this;
}
/**
* Get wallType
*
* #return string
*/
public function getWallType()
{
return $this->wallType;
}
/**
* Set wcType
*
* #param string $wcType
*
* #return AdFlat
*/
public function setWcType($wcType)
{
$this->wcType = $wcType;
return $this;
}
/**
* Get wcType
*
* #return string
*/
public function getWcType()
{
return $this->wcType;
}
}
In controller:
public function editAction(Request $request)
{
$adId = $request->get('id');
if (!$adId) {
return $this->renderError('Unknown Ad');
}
$adEntity = $this->getDoctrine()->getRepository('AdBundle:AdBase')->find($adId);
if (null === $adEntity) {
return $this->renderError('Unknown Ad');
}
$reflection = new \ReflectionClass($adEntity);
$adForm = $this->getForm($reflection->getShortName());
$form = $this->createForm($adForm, $adEntity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($adEntity);
$em->flush();
return $this->redirectToRoute('ad_bundle_ad_view', array(
'id' => $adEntity->getId()
));
}
return $this->render('AdBundle:Ad:edit-ad-flat.html.twig', array(
'form' => $form->createView()
));
}
private function renderError($message = '')
{
return $this->render('::error.html.twig', array(
'error' => $message
));
}
private function getEntity($className)
{
$entityName = 'AdBundle\Entity\\' . $className;
return new $entityName();
}
private function getForm($className)
{
$formName = 'AdBundle\Form\Type\\' . $className . 'Type';
return new $formName();
}
The error message simply states that you are missing a way to set the entity's $id property. It doesn't tell you anything about the class not extending the base class. However, your base class only defines a getter method for the $id property but no setter method.
Doctrine Entities work as POPOs (Plain Old PHP Objects). To achieve extending correctly you need to work with the MappedSuperClass here is an example

Order by an specific related field with doctrine2 findoneby functionality

I want to find one data with findbyone option but by accesing the related object. Next you'll find the two of the entities Im using.
Caja.php
<?php
namespace PD\AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use APY\DataGridBundle\Grid\Mapping as GRID;
/**
*
* #ORM\Entity
* #ORM\Table(name="caja")
*
*/
class Caja
{
/**
*
* #ORM\Id
* #ORM\Column(type="integer")
* #ORM\GeneratedValue
*/
protected $id;
/**
* #ORM\Column(type="string", length=100)
* #GRID\Column(title="Número carton")
*/
protected $numero_carton;
/** #ORM\Column(type="string", length=100) */
protected $contiene_libreta_limite_inferior;
/** #ORM\Column(type="string", length=100) */
protected $contiene_libreta_limite_superior;
/**
* #ORM\Column(type="string", length=100)
* #GRID\Column(title="Libretas omitidas")
*/
protected $omite_libreta;
/**
* #ORM\Column(type="string", length=100)
* #GRID\Column(title="Total libretas")
*/
protected $total_libretas;
/** #ORM\ManyToOne(targetEntity="PD\AppBundle\Entity\Juego")
* #ORM\JoinColumn(name="juego_id", referencedColumnName="id")
* */
protected $juego;
/** #ORM\ManyToOne(targetEntity="PD\AppBundle\Entity\Usuario") **/
protected $usuario;
/**
* #ORM\Column(type="datetime", nullable=true)
* #GRID\Column(title="Fecha creación")
*/
protected $fecha_creacion;
/**
* #var boolean
*
* #ORM\Column(name="estado", type="string", length=50)
* #GRID\Column(title="Estado")
*/
protected $estado;
/*
* 1 = CREADO
* 2 = ASIGNADO_A_SUPERVISOR
* 3 = FINALIZADO_CON_EXITO
* 4 = FINALIZADO_CON_OBSERVACIONES
* 5 = DESHABILITADO
*
*/
/**
* #ORM\OneToMany(targetEntity="PD\AppBundle\Entity\Libreta", mappedBy="caja", cascade={"remove", "persist"})
*/
protected $libretas;
public function __construct()
{
$this->fecha_creacion = new \DateTime();
$this->libretas = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set numero_carton
*
* #param string $numeroCarton
* #return Caja
*/
public function setNumeroCarton($numeroCarton)
{
$this->numero_carton = $numeroCarton;
return $this;
}
/**
* Get numero_carton
*
* #return string
*/
public function getNumeroCarton()
{
return $this->numero_carton;
}
/**
* Set contiene_libreta_limite_inferior
*
* #param string $contieneLibretaLimiteInferior
* #return Caja
*/
public function setContieneLibretaLimiteInferior($contieneLibretaLimiteInferior)
{
$this->contiene_libreta_limite_inferior = $contieneLibretaLimiteInferior;
return $this;
}
/**
* Get contiene_libreta_limite_inferior
*
* #return string
*/
public function getContieneLibretaLimiteInferior()
{
return $this->contiene_libreta_limite_inferior;
}
/**
* Set contiene_libreta_limite_superior
*
* #param string $contieneLibretaLimiteSuperior
* #return Caja
*/
public function setContieneLibretaLimiteSuperior($contieneLibretaLimiteSuperior)
{
$this->contiene_libreta_limite_superior = $contieneLibretaLimiteSuperior;
return $this;
}
/**
* Get contiene_libreta_limite_superior
*
* #return string
*/
public function getContieneLibretaLimiteSuperior()
{
return $this->contiene_libreta_limite_superior;
}
/**
* Set omite_libreta
*
* #param string $omiteLibreta
* #return Caja
*/
public function setOmiteLibreta($omiteLibreta)
{
$this->omite_libreta = $omiteLibreta;
return $this;
}
/**
* Get omite_libreta
*
* #return string
*/
public function getOmiteLibreta()
{
return $this->omite_libreta;
}
/**
* Set total_libretas
*
* #param string $totalLibretas
* #return Caja
*/
public function setTotalLibretas($totalLibretas)
{
$this->total_libretas = $totalLibretas;
return $this;
}
/**
* Get total_libretas
*
* #return string
*/
public function getTotalLibretas()
{
return $this->total_libretas;
}
/**
* Set juego
*
* #param \PD\AppBundle\Entity\Juego $juego
* #return Caja
*/
public function setJuego(\PD\AppBundle\Entity\Juego $juego)
{
$this->juego = $juego;
}
/**
* Get juego
*
* #return \PD\AppBundle\Entity\Juego
*/
public function getJuego()
{
return $this->juego;
}
public function __toString()
{
return $this->getNumeroCarton();
}
/**
* Set usuario
*
* #param \PD\AppBundle\Entity\Usuario $usuario
* #return Caja
*/
public function setUsuario(\PD\AppBundle\Entity\Usuario $usuario)
{
$this->usuario = $usuario;
return $this;
}
/**
* Get usuario
*
* #return \PD\AppBundle\Entity\Usuario
*/
public function getUsuario()
{
return $this->usuario;
}
/**
* Set fecha_creacion
*
* #param \DateTime $fechaCreacion
* #return Caja
*/
public function setFechaCreacion($fechaCreacion)
{
$this->fecha_creacion = $fechaCreacion;
return $this;
}
/**
* Get fecha_creacion
*
* #return \DateTime
*/
public function getFechaCreacion()
{
return $this->fecha_creacion;
}
/**
* Set estado
*
* #param string $estado
* #return Caja
*/
public function setEstado($estado)
{
$this->estado = $estado;
return $this;
}
/**
* Get estado
*
* #return string
*/
public function getEstado()
{
return $this->estado;
}
/**
* Add libretas
*
* #param \PD\AppBundle\Entity\Libreta $libretas
* #return Caja
*/
public function addLibreta(\PD\AppBundle\Entity\Libreta $libretas)
{
//$this->libretas[] = $libretas;
//return $this;
$libretas->setCaja($this);
$this->libretas->add($libretas);
return $this;
}
/**
* Remove libretas
*
* #param \PD\AppBundle\Entity\Libreta $libretas
*/
public function removeLibreta(\PD\AppBundle\Entity\Libreta $libretas)
{
$this->libretas->removeElement($libretas);
}
/**
* Get libretas
*
* #return \Doctrine\Common\Collections\Collection
*/
public function getLibretas()
{
return $this->libretas;
}
}
Libreta.php
<?php
namespace PD\AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use APY\DataGridBundle\Grid\Mapping as GRID;
/**
* Libreta
*
* #ORM\Table()
* #ORM\Entity
*/
class Libreta
{
/**
* #var integer
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* #ORM\ManyToOne(targetEntity="PD\AppBundle\Entity\Caja", inversedBy="libretas")
* #ORM\JoinColumn(name="caja_id", referencedColumnName="id", nullable=false)
* #Assert\Type(type="PD\AppBundle\Entity\Caja")
* #GRID\Column(field="caja.juego.nombre", title="Juego")
* #GRID\Column(field="caja.numero_carton", title="Caja")
*/
protected $caja;
/**
* #var string
*
* #ORM\Column(name="correlativo", type="string", length=10)
* #GRID\Column(title="Correlativo")
*/
private $correlativo;
/**
* #ORM\ManyToOne(targetEntity="PD\AppBundle\Entity\Usuario")
* #ORM\JoinColumn(name="vendedor_id", referencedColumnName="id", nullable=true)
* #Assert\Type(type="PD\AppBundle\Entity\Usuario")
* #GRID\Column(field="vendedor.nombre", title="Nombre vendedor")
* #GRID\Column(field="vendedor.apellidos", title="Apellidos vendedor")
*/
protected $vendedor;
/** #ORM\Column(name="precio_al_vendedor", type="decimal", scale=2) */
protected $precio_al_vendedor;
/** #ORM\Column(name="precio_acumulado", type="decimal", scale=2)
* #GRID\Column(title="Precio acumulado")
*/
protected $precio_acumulado;
/** #ORM\Column(name="premio_acumulado", type="decimal", scale=2)
* #GRID\Column(title="Premio acumulado")
*/
protected $premio_acumulado;
/**
* #ORM\Column(type="datetime", nullable=true)
*/
protected $fecha_asignacion_vendedor;
/**
* #ORM\Column(type="datetime", nullable=true)
*/
protected $fecha_estado_final;
/**
* #ORM\OneToMany(targetEntity="PD\AppBundle\Entity\Ticket", mappedBy="libreta", cascade={"persist"})
*/
protected $tickets;
/**
* Get id
*
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set correlativo
*
* #param string $correlativo
* #return Libreta
*/
public function setCorrelativo($correlativo)
{
$this->correlativo = $correlativo;
return $this;
}
/**
* Get correlativo
*
* #return string
*/
public function getCorrelativo()
{
return $this->correlativo;
}
/**
* Set precio_al_vendedor
*
* #param string $precioAlVendedor
* #return Libreta
*/
public function setPrecioAlVendedor($precioAlVendedor)
{
$this->precio_al_vendedor = $precioAlVendedor;
return $this;
}
/**
* Get precio_al_vendedor
*
* #return string
*/
public function getPrecioAlVendedor()
{
return $this->precio_al_vendedor;
}
/**
* Set precio_acumulado
*
* #param string $precioAcumulado
* #return Libreta
*/
public function setPrecioAcumulado($precioAcumulado)
{
$this->precio_acumulado = $precioAcumulado;
return $this;
}
/**
* Get precio_acumulado
*
* #return string
*/
public function getPrecioAcumulado()
{
return $this->precio_acumulado;
}
/**
* Set fecha_asignacion_vendedor
*
* #param \DateTime $fechaAsignacionVendedor
* #return Libreta
*/
public function setFechaAsignacionVendedor($fechaAsignacionVendedor)
{
$this->fecha_asignacion_vendedor = $fechaAsignacionVendedor;
return $this;
}
/**
* Get fecha_asignacion_vendedor
*
* #return \DateTime
*/
public function getFechaAsignacionVendedor()
{
return $this->fecha_asignacion_vendedor;
}
/**
* Set fecha_estado_final
*
* #param \DateTime $fechaEstadoFinal
* #return Libreta
*/
public function setFechaEstadoFinal($fechaEstadoFinal)
{
$this->fecha_estado_final = $fechaEstadoFinal;
return $this;
}
/**
* Get fecha_estado_final
*
* #return \DateTime
*/
public function getFechaEstadoFinal()
{
return $this->fecha_estado_final;
}
/**
* Set vendedor
*
* #param \PD\AppBundle\Entity\Usuario $vendedor
* #return Libreta
*/
public function setVendedor(\PD\AppBundle\Entity\Usuario $vendedor = null)
{
$this->vendedor = $vendedor;
return $this;
}
/**
* Get vendedor
*
* #return \PD\AppBundle\Entity\Usuario
*/
public function getVendedor()
{
return $this->vendedor;
}
/**
* Set caja
*
* #param \PD\AppBundle\Entity\Caja $caja
* #return Libreta
*/
public function setCaja(\PD\AppBundle\Entity\Caja $caja = null)
{
$this->caja = $caja;
return $this;
}
/**
* Get caja
*
* #return \PD\AppBundle\Entity\Caja
*/
public function getCaja()
{
return $this->caja;
}
/**
* Constructor
*/
public function __construct()
{
$this->tickets = new \Doctrine\Common\Collections\ArrayCollection();
//$this->caja = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add tickets
*
* #param \PD\AppBundle\Entity\Ticket $tickets
* #return Libreta
*/
public function addTicket(\PD\AppBundle\Entity\Ticket $tickets)
{
//$this->tickets[] = $tickets;
$tickets->setLibreta($this);
$this->tickets->add($tickets);
return $this;
}
/**
* Remove tickets
*
* #param \PD\AppBundle\Entity\Ticket $tickets
*/
public function removeTicket(\PD\AppBundle\Entity\Ticket $tickets)
{
$this->tickets->removeElement($tickets);
}
/**
* Get tickets
*
* #return \Doctrine\Common\Collections\Collection
*/
public function getTickets()
{
return $this->tickets;
}
public function __toString()
{
return $this->correlativo;
}
/**
* Set premio_acumulado
*
* #param string $premioAcumulado
* #return Libreta
*/
public function setPremioAcumulado($premioAcumulado)
{
$this->premio_acumulado = $premioAcumulado;
return $this;
}
/**
* Get premio_acumulado
*
* #return string
*/
public function getPremioAcumulado()
{
return $this->premio_acumulado;
}
}
And what I would like to do is to find one next row ordered by field "fecha_creacion". This is what I have that get the next row but ordered by caja ID
$libreta_siguiente = $this->getDoctrine()
->getRepository('PDBundle:Libreta')
->findOneBy(array('vendedor' => NULL), array('caja' => 'DESC'));
But what I want to know if I can do something like "array('caja.fecha_creacion' => 'DESC'));". Until now, this part of the code isn't recognizing the "fecha_creacion" field
$libreta_siguiente = $this->getDoctrine()
->getRepository('PDBundle:Libreta')
->findOneBy(array('vendedor' => NULL), array('caja.fecha_creacion' => 'DESC'));
According to the doc, you can't pass a second parameter to the findOnyBy function.
But you can try to cheat by using the findBy methods and the position of this array :
$libreta_siguiente = $this->getDoctrine()
->getRepository('PDBundle:Libreta')
->findNextLibreta(NULL, $actualPosicion);
...
And in your repository :
public function findNextLibreta($vendedor, $posicion) {
$qb = $this->createQueryBuilder('l');
$qb->leftJoin(l.caja, 'c')
->where('l.vendedor = :vendedor')
->setParameter(':type', $type)
->orderBy('c.fecha_creacion', 'DESC');
$results = $qb->getQuery()->getResult();
return $results[$posicion];
}
Thanks to #JulienBourdic I changed a little his proposal but him basically gave me the answer. The code is:
$posicion = 0;
$libreta_siguiente = $this->getDoctrine()
->getRepository('PDBundle:Libreta')
->findByNextLibreta($posicion);
Then in LibretaRepository.php
public function findByNextLibreta($posicion) {
$qb = $this->createQueryBuilder('l');
$qb->leftJoin('l.caja', 'c')
->where('l.vendedor is NULL')
->orderBy('c.fecha_creacion', 'DESC');
$results = $qb->getQuery()->getResult();
return $results[$posicion];
}
It differs a little cuz didn't know how to pass the NULL value Julien was proposing so I used l.vendedor is NULL burned in the code.

Retrieve user from existing table User

I'm really new to Symfony and I'm learning how it works.
So I have a DB and a table on it called USER with the fields name,username,password etc etc.
I'm trying to create a login form that will take the user from that table.
I've already created my enity User
I've read the doc here, but it's not what I want, because as i said my entity it's still there.
Should I use FOS user bunble? I've read the doc here of this bundle, but I didn't get the final part (step7).So my question is, can I use my User Entity with FOS user Bundle? If the answer is no, there is another solution to that, sicne I don't what to change my DB table?
Thank everyone in advance
P.s I generated the User entity following this dochere and this is the resulting class
namespace LocalWorker\BackendBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Utente
*/
class Utente
{
/**
* #var string
*/
private $uNome;
/**
* #var string
*/
private $uCognome;
/**
* #var string
*/
private $uUsername;
/**
* #var string
*/
private $uPassword;
/**
* #var string
*/
private $uEmail;
/**
* #var string
*/
private $uRuolo;
/**
* #var integer
*/
private $uStatus;
/**
* #var \DateTime
*/
private $uDateIns;
/**
* #var \DateTime
*/
private $uDateActive;
/**
* #var integer
*/
private $uId;
/**
* Set uNome
*
* #param string $uNome
* #return Utente
*/
public function setUNome($uNome)
{
$this->uNome = $uNome;
return $this;
}
/**
* Get uNome
*
* #return string
*/
public function getUNome()
{
return $this->uNome;
}
/**
* Set uCognome
*
* #param string $uCognome
* #return Utente
*/
public function setUCognome($uCognome)
{
$this->uCognome = $uCognome;
return $this;
}
/**
* Get uCognome
*
* #return string
*/
public function getUCognome()
{
return $this->uCognome;
}
/**
* Set uUsername
*
* #param string $uUsername
* #return Utente
*/
public function setUUsername($uUsername)
{
$this->uUsername = $uUsername;
return $this;
}
/**
* Get uUsername
*
* #return string
*/
public function getUUsername()
{
return $this->uUsername;
}
/**
* Set uPassword
*
* #param string $uPassword
* #return Utente
*/
public function setUPassword($uPassword)
{
$this->uPassword = $uPassword;
return $this;
}
/**
* Get uPassword
*
* #return string
*/
public function getUPassword()
{
return $this->uPassword;
}
/**
* Set uEmail
*
* #param string $uEmail
* #return Utente
*/
public function setUEmail($uEmail)
{
$this->uEmail = $uEmail;
return $this;
}
/**
* Get uEmail
*
* #return string
*/
public function getUEmail()
{
return $this->uEmail;
}
/**
* Set uRuolo
*
* #param string $uRuolo
* #return Utente
*/
public function setURuolo($uRuolo)
{
$this->uRuolo = $uRuolo;
return $this;
}
/**
* Get uRuolo
*
* #return string
*/
public function getURuolo()
{
return $this->uRuolo;
}
/**
* Set uStatus
*
* #param integer $uStatus
* #return Utente
*/
public function setUStatus($uStatus)
{
$this->uStatus = $uStatus;
return $this;
}
/**
* Get uStatus
*
* #return integer
*/
public function getUStatus()
{
return $this->uStatus;
}
/**
* Set uDateIns
*
* #param \DateTime $uDateIns
* #return Utente
*/
public function setUDateIns($uDateIns)
{
$this->uDateIns = $uDateIns;
return $this;
}
/**
* Get uDateIns
*
* #return \DateTime
*/
public function getUDateIns()
{
return $this->uDateIns;
}
/**
* Set uDateActive
*
* #param \DateTime $uDateActive
* #return Utente
*/
public function setUDateActive($uDateActive)
{
$this->uDateActive = $uDateActive;
return $this;
}
/**
* Get uDateActive
*
* #return \DateTime
*/
public function getUDateActive()
{
return $this->uDateActive;
}
/**
* Get uId
*
* #return integer
*/
public function getUId()
{
return $this->uId;
}
}

Categories