Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Symfony problem z wyszukiwaniem
Forum PHP.pl > Forum > PHP
paprikano
Witam, mam mały problem. Mianowicie mam encje Advert z ogloszeniami, jest poalczona relacja jeden do wielu z encja Address, natomiast Address tez jest relacja jeden do wielu z encja City.
Probuje zrobic wyszukiwarke, w zmiennejj $selectedCity dobrze mi pobiera ID miasta natomiast pozniej jest jakas lipa sad.gif
searchController ma 1 akcje:

Cytat
/**
* @Route("/search/city", name="search_city")
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function searchCityAction(Request $request)
{
$search = new City();

$form = $this->createForm(CityType::class, $search)
->add('submit', SubmitType::class, ["label" => "Szukaj"]);


$entityManager = $this->getDoctrine()->getManager();


if($request->isMethod(Request::METHOD_POST))
{
$form->handleRequest($request);

$selectedCity = ($_REQUEST['city']['city']);

$address = $entityManager->getRepository(Address::class)->findBy(["city" => $selectedCity]);
$searched = $entityManager->getRepository(Advert::class)->findBy(["address" => $address]);

return $this->render("Search/searched.html.twig", ["searched" => $searched]);
}


return $this->render("Search/index.html.twig", ["form" => $form->createView()]);
}


Dostalem jedna rade zmienic controller tak:

Cytat
/**
* @Route("/search/city", name="search_city")
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function searchCityAction(Request $request)
{
$search = new City();

$form = $this->createForm(CityType::class, $search)
->add('submit', SubmitType::class, ["label" => "Szukaj"]);


$entityManager = $this->getDoctrine()->getManager();


if($request->isMethod(Request::METHOD_POST))
{
$form->handleRequest($request);

$selectedCity = ($_REQUEST['city']['city']);

$address = $entityManager->getRepository(Address::class)->findBy(["city" => $selectedCity]);
$addressIds = $address->map(function($single_address) {
return $single_address->id;
});
$searched = $entityManager->getRepository(Advert::class)->findBy(["address" => $addressIds]);

return $this->render("Search/searched.html.twig", ["searched" => $searched]);
}


return $this->render("Search/index.html.twig", ["form" => $form->createView()]);
}


Tylko ze przy takim rozwiazaniu dostaje errora:

Cytat
Call to a member function map() on array


Wie ktos moze co moze byc nie tak?
Pyton_000
No i? Masz dokładny komunikat błędu. $address jest tablicą obiektów a nie obiektem typu Iterator.

Tak powinno wyglądać

  1. $addressIds = array_map(function($single_address) {
  2. return $single_address->id;
  3. }, $address);
paprikano
Cytat(Pyton_000 @ 6.05.2018, 13:27:24 ) *
No i? Masz dokładny komunikat błędu. $address jest tablicą obiektów a nie obiektem typu Iterator.

Tak powinno wyglądać

  1. $addressIds = array_map(function($single_address) {
  2. return $single_address->id;
  3. }, $address);


Super działa dzieki, tylko trzeba bylo jeszcze ten return $single_address->id zmienic na $single_address->getId() bo krzyczal ze id jest prywatna
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.