SymfonyとDoctrineの記事になります。
私の環境の各バージョンは次の通りです。
Symfony 3.4
Doctrine 2.12
後から考えれば当たり前なんですけど、エラーが出た時に見直したのでメモ。findBy
で取得したentityからデータを取得しようとしたときに、「Error: Call to a member function on array」が発生。
エラーが出た理由
エラーが出るサンプル
// get data where "userId" is testerXX $userRepository = $entityManager->getRepository('AppBundle:User'); $userEntity = $userRepository->findBy( ['userId' => 'testerXX'] ); // Get "name" from the obtained entity $userEntity->getName(); // Error: Call to a member function on array
上記例はエラーが発生します。その理由は、findByで取得したEntityが配列になっているからです。
なので、そのままEntityとしてデータを取得するには、Entityを1つだけ取得する必要があります。
エラー解消法
取得したいデータが1レコードであるという前提がありますが、配列でなく、Entity一つを取得したらOKです。
つまりfindOneBy
を使って取得します。
// get data where "userId" is testerXX $userRepository = $entityManager->getRepository('AppBundle:User'); $userEntity = $userRepository->findOneBy( ['userId' => 'testerXX'] ); // Get "name" from the obtained entity $userEntity->getName();
わかっている人にはそれはそうだよねという話なのですが、ちょっと引っかかったのでまとめてみました。
Symfonyおすすめ書籍
あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。
「PHPフレームワーク Symfony 4入門」