@mallory_cormier
In Symfony 5, you can join two tables using Doctrine's QueryBuilder. Here is a simple example of how to join two tables in Symfony 5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// src/Entity/Product.php
namespace AppEntity;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity
* @ORMTable(name="products")
*/
class Product
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMColumn(type="string")
*/
private $name;
/**
* @ORMManyToOne(targetEntity="AppEntityCategory")
* @ORMJoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
// Getters and Setters
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// src/Entity/Category.php
namespace AppEntity;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity
* @ORMTable(name="categories")
*/
class Category
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMColumn(type="string")
*/
private $name;
// Getters and Setters
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// src/Controller/ProductController.php
namespace AppController;
use AppEntityProduct;
use DoctrineORMEntityManagerInterface;
use SymfonyComponentRoutingAnnotationRoute;
class ProductController extends AbstractController
{
/**
* @Route("/products", name="products")
*/
public function index(EntityManagerInterface $entityManager)
{
$query = $entityManager->createQueryBuilder()
->select('p, c')
->from('AppEntityProduct', 'p')
->join('p.category', 'c')
->getQuery();
$products = $query->getResult();
return $this->render('products/index.html.twig', [
'products' => $products,
]);
}
}
|
In this example, we are using Doctrine's QueryBuilder to select both the Product and Category entities and joining them on the category_id field. This will fetch all the products along with their corresponding categories in a single query.