Warning: Illegal string offset 'city' Symfony form search

692 views Asked by At

I have problem when sending my search form.

Symfony say

Warning: Illegal string offset 'city'

it's my function for process my form

public function searchTeam($option)
{
    return $this->createQueryBuilder('t') // t = team
                ->leftJoin('t.cities','city')
                ->where('city.name = :cityName')
                ->setParameter("cityName", $option['city']->getName())
                ->andWhere('t.name = :name')
                ->setParameter("name", $option['name'])
                ->getQuery()
                ->getResult();
}

and my TeamController :

$formSearchTeam = $this->createForm(SearchTeamType::class, $team);
$formSearchTeam->handleRequest($request);

if($formSearchTeam->isSubmitted() && $formSearchTeam->isValid()) {
    $option = $formSearchTeam->getData()->getName();
    $teamSearch = $repo->searchTeam($option);
    dd($teamSearch);
}

I make dd($option) for see data to send my form and I recover this data :

    TeamController.php on line 56:
    App\Entity\Team {#1068 ▼
      -id: null
      -name: "New"
      -picture: null
      -home_team: Doctrine\Common\Collections\ArrayCollection {#1071 ▶}
      -outside_team: Doctrine\Common\Collections\ArrayCollection {#1085 ▶}
      -city: App\Entity\City {#1095 ▼
        -id: 7
        -name: "Paris"
        -zip_code: 75000
        -teams: Doctrine\ORM\PersistentCollection {#1093 ▼
          -snapshot: []
          -owner: App\Entity\City {#1095}
          -association: array:15 [ …15]
          -em: Doctrine\ORM\EntityManager {#490 …11}
          -backRefFieldName: "city"
          -typeClass: Doctrine\ORM\Mapping\ClassMetadata {#801 …}
          -isDirty: false
          #collection: Doctrine\Common\Collections\ArrayCollection {#1170 ▶}
          #initialized: false
        }
      }
      -team_asking: Doctrine\Common\Collections\ArrayCollection {#1129 ▶}
      -accepting_team: Doctrine\Common\Collections\ArrayCollection {#1125 ▶}
      -Team_lead: null
      -User: Doctrine\Common\Collections\ArrayCollection {#1080 ▶}
    }

1

There are 1 answers

0
Brice A On

I find my error,

City is an object and not an array. In my code I change this

->setParameter("cityName", $option['city']->getName())

by that :

->setParameter("cityName", $option->getCity()->getName())