FORSMILE
EN
Symfony2021/07/06

findByで取得したデータで「Error: Call to a member function on array」がでた時[Symfony]

後から考えれば当たり前なんですけど、エラーが出た時に見直したのでメモ。findByで取得したentityからデータを取得しようとしたときに、「Error: Call to a member function on array」が発生。

ブログ一覧へ / Back to Blog

後から考えれば当たり前なんですけど、エラーが出た時に見直したのでメモ。findByで取得したentityからデータを取得しようとしたときに、「Error: Call to a member function on array」が発生。

エラーが出た理由

javascript
// 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です。

javascript
// 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おすすめ書籍

あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。

📦
Amazon で関連書籍・ツールを検索
Symfony PHP フレームワーク
Amazonで探す →(アソシエイトリンク)