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入門」