Finding a database using Doctrine and Symfony2

So, I'm now trying to do a simple search using Symfony2 and Doctrine. Something similar to this: http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/searching.html

Currently, I have the following setup for the YAML file to create my objects. It correctly generates my class Style object as a class.

 ...\Style: type: entity table: styles id: id: type: integer generator: strategy: IDENTITY actAs: Searchable: fields: [title] batchUpdates: true fields: title: type: string length: 150 unique: true 

In my controller, I am trying to search in this table based on a row.

 public function searchAction($pattern) { $repository = $this->getDoctrine()->getRepository('..:Style'); $search = $repository->search($pattern); return $this->outputize($search); } 

However, when I try to execute the code, I get the following exception.

 Undefined method 'search'. The method name must start with either findBy or findOneBy! 

Am I creating my entities correctly or is there something that I clearly don't see?

On the side of the note, when I look at my Entity/Style.php after generation, there is no clear method ->search() , is the function that should be created by Symfony here?

+4
source share
2 answers

search() not a feature supported in Symfony2. You are looking at the Symfony 1.x documentation, and Symfony2 is really different from Symfony 1.x, so you should always use doc for reference.

There are several ways to get objects in Symfony2. Here are some examples:

  • To find

     $user = $this->getDoctrine() ->getRepository('UserBundle:User') ->find($user_id) ; 
  • DQL:

     $query = $em->createQuery( 'SELECT b FROM YourBundle:Bid b WHERE b.property_id = :property_id ORDER BY b.amount DESC' )->setParameter('property_id', $property_id); try { $bids = $query->getResult(); } catch (\Doctrine\Orm\NoResultException $e) { //Handle No Result Exception here } 

See the Doctrine guide for Symfony2 here: http://symfony.com/doc/current/book/doctrine.html

+6
source

Hello, you can do it in symfony 3

 $em = $this->getDoctrine()->getManager(); $query = $em->createQuery( 'SELECT p FROM AppBundle:Hotel p WHERE p.address like :location ORDER BY p.address ASC' )->setParameter('location','%'.$request->get('location').'%' ); $hotel = $query->getResult(); 
+2
source

All Articles