@Hfnas

Как исправить ошибку «Error: Class Blog\Entity\Post has no association named img_id»?

Будем считать, что одну картинку могут иметь несколько статей. Получается
Class Blog\Entity\Post
class Post{
 /**@ORM\Column(name="img_id")
     * @ManyToOne(targetEntity="\Blog\Entity\Images")
     * @JoinColumn(name="img_id", referencedColumnName="id")
     */
    protected $img;
}


Class Blog\Entity\Images
class Images
{
    /**
     * @ORM\Id
     * @ORM\Column(name="id")
     * @ORM\GeneratedValue
     */

    protected $id;
}


добавила репозитории
class PostRepository extends EntityRepository
{

    /**
     * Retrieves all published posts whith picture in descending date order.
     * @return Query
     */
    public function findPublishedPostsWithImg()
    {
        $entityManager = $this->getEntityManager();

        $queryBuilder = $entityManager->createQueryBuilder('p');
//без джойна работает.
        $queryBuilder->select('p')
            ->from(Post::class, 'p')
            ->where('p.status = ?1')
            ->leftJoin('p.img','c')
            ->addSelect('c')
            ->orderBy('p.dateCreated', 'DESC')
            ->setParameter('1', Post::STATUS_PUBLISHED);

        return $queryBuilder->getQuery();
    }
}


Далее в контроллере
public function indexAction()
    {
        $page = $this->params()->fromQuery('page', 1);
        $tagFilter = $this->params()->fromQuery('tag', null);

        if ($tagFilter) {

            // Filter posts by tag
            $query = $this->entityManager->getRepository(Post::class)
                ->findPostsByTag($tagFilter);

        } else {
            // Get recent posts
            $query = $this->entityManager->getRepository(Post::class)
                ->findPublishedPostsWithImg();
        }

        $adapter = new DoctrineAdapter(new ORMPaginator($query, true));
        $paginator = new Paginator($adapter);
        $paginator->setDefaultItemCountPerPage(10);
        $paginator->setCurrentPageNumber($page);

        // Get popular tags.
        $tagCloud = $this->postManager->getTagCloud();

        // Render the view template.
        return new ViewModel([
            'posts' => $paginator,
            'postManager' => $this->postManager,
            'tagCloud' => $tagCloud
        ]);
    }


я не знаю что исправить, делала по аналогии с
этой темой, по примеру пользователь-адрес.
Error producing an iterator

[Semantical Error] line 0, col 56 near 'c WHERE p.status': Error: Class Blog\Entity\Post has no association named img_id

SELECT p, c FROM Blog\Entity\Post p INNER JOIN p.img_id c WHERE p.status = ?1 ORDER BY p.dateCreated DESC
- вроде верный запрос, почему он не работает?

я не знаю, думала доки помогут мне,читала, думала, неправильно сущности описала, вроде верно.
Подскажите, пожалуйста.
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 80 000 до 120 000 руб.
Paxport Москва
от 140 000 до 190 000 руб.
от 1 200 до 2 000 usd.
26 авг. 2019, в 01:06
2000 руб./за проект
25 авг. 2019, в 23:48
4000 руб./за проект
25 авг. 2019, в 22:35
1000 руб./за проект