Как я могу получить данные из 2 таблиц в Doctrine? - PullRequest
0 голосов
/ 04 октября 2019

Мне нужно получить данные из 2 таблиц в Doctrine (Symfony 4).

Я создал Entity и репозиторий для таблиц.

Здесь sql код

SELECT * 
  FROM wp_terms AS t
  LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
 WHERE tt.taxonomy = 'nav_menu';
#Repository/WpTermsRepository.php
#Simple query not working
public function findOneBySomeField($value): ?WpTerms
    {
        return $this->createQueryBuilder('w')
            ->andWhere('w.name = :val')
            ->setParameter('val', $value)
            ->getQuery()
            ->getOneOrNullResult()
            ;
    }

возвращает Возникла исключительная ситуация в драйвере: SQLSTATE [HY000] [2002] ���

1 Ответ

0 голосов
/ 04 октября 2019

Если вы правильно сопоставили свои сущности, то каждая сущность WpTermTaxonomy должна агрегировать одну сущность WpTerms, к которой следует обращаться через метод WpTerms :: getTerm ().

Более того, ваше исследование сосредоточено на WpTermTaxonomy ::свойство таксономии, и уже есть один встроенный метод для его поиска в доктрине EntityRepository. Так что в вашем контроллере попробуйте это:

/**
 * The EntityRepository::findOneBy() method return either 
 * an instance of WpTermTaxonomy or NULL.
 * @var WpTermTaxonomy|null $wpTermTaxonomy
 */
$wpTermTaxonomy = $this->get('doctrine')
    ->getManager()
    ->getRepository(WpTerms::class)
    ->findOneBy(['taxonomy'=>'nav_menu'])
;

И получите название вашего термина, если результат не равен нулю:

if($wpTermTaxonomy) 
{
    $term = $wpTermTaxonomy->getTerm();
    $name = $term->getName();
    echo("Term found: $name");
}
else 
{
    echo('Term not found');
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...