Содержание вашего join()
метода не имеет смысла.Вы вызываете метод объекта без использования объекта.
Соединение таким способом не используется.Вы должны использовать entityAlias.memberName
Попробуйте этот подход, если вы хотите использовать его в своем контроллере:
$pages = $this->getDoctrine()
->getRepository(Pages::class)
->createQueryBuilder('p') //Alias p for Page
->leftJoin('p.icon', 'i') //you are joining the icon member
->getQuery()
->getResult();
Но я предлагаю вам использовать Класс репозитория вместо:
В /src/Repository/PagesRepository.php:
class PagesRepository extends EntityRepository
{
public function GetIcons()
{
$query = $this->createQueryBuilder('p') //Alias p for Page
->leftJoin('p.icon', 'i') //you are joining the icon member
->getQuery()
->getResult();
return (query);
}
}
В вашем контроллере:
$pages = $this->getDoctrine()->getRepository(Pages::class)->GetIcons();
В вашей сущности:
/*
* @ORM\Entity(repositoryClass="App\Repository\PagesRepository")
*/
class Pages
{
//Your entity
}
Уникальная страница имеет уникальный значок.
Значок может иметь много страниц.
В контексте страницы это отношение ManyToOne (много страницможет иметь один значок)
В вашей сущности Page
определение значка должно быть записано следующим образом:
/**
* @var \Icons
*
* @ORM\ManyToOne(targetEntity="Icons")
* @ORM\JoinColumn(name="icon", referencedColumnName="id")
*/
private $icon;
Для получения дополнительной информации см. документацию