Задать вопрос
@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
- вроде верный запрос, почему он не работает?

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

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

Похожие вопросы
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект