Chapters
-
Course Code
Subscribe to download the code!
Subscribe to download the code!
-
This Video
Subscribe to download the video!
Subscribe to download the video!
-
Subtitles
Subscribe to download the subtitles!
Subscribe to download the subtitles!
-
Course Script
Subscribe to download the script!
Subscribe to download the script!
Scroll down to the script below, click on any sentence (including terminal blocks) to jump to that spot in the video!
¡Hola amigos! ¡Bienvenidos de nuevo! Y bienvenidos de nuevo a mí, si se me permite el atrevimiento. Vuelvo de mis "vacaciones" de 14 meses de cáncer cerebral. Por desgracia, no estoy del todo mejor y claro, tecleo con una mano, como un pirata de Symfony. Pero, caramba, os he echado de menos a todos y he echado de menos Symfony. Y hoy es un buen día. Gracias por el apoyo, el cariño y la paciencia. Ahora, ¡a trabajar!
En el tutorial anterior, hicimos cosas impresionantes. Creamos una entidad, configuramos migraciones, creamos fixtures y realizamos consultas como nerds de SQL. Pero seamos realistas, no podemos construir nada que impresione a nuestros amigos o a nuestra abuela sin entender las relaciones de la base de datos. Por ejemplo, "esta porción de pizza me pertenece" o "tengo muchas porciones de pizza" Mmm, me gusta la pizza.
Para deformar completamente tu juego de relaciones, descarga el código del curso de esta página. Una vez que lo hayas descomprimido, encontrarás un directorio start/
con el código que ves aquí. Echa un vistazo al práctico archivoREADME.md
para ver todos los detalles de la configuración. El último paso será abrir un terminal, navegar por el proyecto y ejecutar: symfony serve
. A veces lo ejecuto con -d
, para que haga su trabajo en segundo plano, pero hoy lo ejecutaré en primer plano.
symfony serve
Hola, servidor y registros de Tailwind
Un efecto secundario útil de la ejecución en primer plano es que podemos ver todos los registros, aunque puedes verlos en cualquier momento ejecutando symfony server:log
. Este proyecto utiliza Tailwind CSS y puedes ver cómo se descarga Tailwind y se construye en segundo plano. Una vez hecho esto, voy a desplazarme hacia arriba y hacer clic en el enlace para lanzar nuestra aplicación: ¡Starshop!
Introducción a Starshop
Starshop se dedica a reparar naves, una solución integral para todos tus problemas con las naves espaciales, porque nadie quiere flotar por el espacio intergaláctico con una ducha rota. Qué asco. Todas estas naves espaciales proceden directamente de la base de datos. Si navegas hasta src/Entity/
, encontrarás nuestra única entidad brillante: Starship
.
Show Lines
|
// ... lines 1 - 10 |
#[ORM\Entity(repositoryClass: StarshipRepository::class)] | |
class Starship | |
{ | |
use TimestampableEntity; | |
#[ORM\Id] | |
#[ORM\GeneratedValue] | |
#[ORM\Column] | |
private ?int $id = null; | |
#[ORM\Column] | |
private ?string $name = null; | |
Show Lines
|
// ... lines 23 - 137 |
} |
Pasos siguientes: Seguimiento de piezas de naves
Es hora de animar las cosas rastreando las piezas de una nave y su coste. Luego asignaremos cada pieza a una nave de la base de datos.
13 Comments
Thank you @Braunstetter ❤️. I'm happy to be "heard" again


Ryan! It's so awesome to hear your voice in a new video! I was hoping you could tell me something about your PhpStorm setup. About 1 minute in, how do you get those icons?


I followed the project installation instructions step by step, but when I check out the site at https://localhost:8000
, the following error occurs:
An exception occurred in the driver: could not find driver
Doctrine\DBAL\Exception\ DriverException
Show exception properties
in C:\Proyectos\relations\vendor\doctrine\dbal\src\Driver\API\PostgreSQL\ExceptionConverter.php (line 85)
if (str_contains($exception->getMessage(), 'terminating connection')) {
return new ConnectionLost($exception, $query);
}
return new DriverException($exception, $query);
}
}
Hey @giorgiocba,
Let's figure this out!
I think you don't have the postgres PHP extension installed/enabled. I see you are in Windows - how did you install PHP?
If you run symfony php -m
, this lists your enabled PHP extensions, do you see any that start with pdo_
?
--Kevin


only the 5th to welcome you back ... ryan. we missed u a lot. welcome back and i hope you can recover at least to 99%. kevin did his job good, but there is no humor like yours.
har har har ... (onehanded spacepirate greetings) from germany 🛸
Hey @Ek24!
har har har ... (onehanded spacepirate greetings) from germany 🛸
Well I freaking love this! Who else gets a onehanded spacepirate greeting from Germany?
Thanks for the nice message & cheers!
Hey Ryan, very welcome back 🙌🙌
It is always great to have you 💪💪💪
Thank you @john-erney-rojas!
It feels like a homecoming 🥳
So glad to hear you again Ryan ❤️
Thank you! It'd good to be "heard" again ;)

"Houston: no signs of life"
Start the conversation!
What PHP libraries does this tutorial use?
// composer.json
{
"require": {
"php": ">=8.2",
"ext-ctype": "*",
"ext-iconv": "*",
"babdev/pagerfanta-bundle": "^4.5", // v4.5.0
"doctrine/dbal": "^4", // 4.2.3
"doctrine/doctrine-bundle": "^2.13", // 2.14.0
"doctrine/doctrine-migrations-bundle": "^3.3", // 3.4.1
"doctrine/orm": "^3.3", // 3.3.2
"knplabs/knp-time-bundle": "^2.2", // v2.4.0
"pagerfanta/doctrine-orm-adapter": "^4.7", // v4.7.1
"php-cs-fixer/shim": "^3.46", // v3.73.1
"phpdocumentor/reflection-docblock": "^5.3", // 5.6.1
"phpstan/phpdoc-parser": "^2.0", // 2.1.0
"stof/doctrine-extensions-bundle": "^1.12", // v1.13.0
"symfony/asset": "7.2.*", // v7.2.0
"symfony/asset-mapper": "7.2.*", // v7.2.3
"symfony/console": "7.2.*", // v7.2.1
"symfony/dotenv": "7.2.*", // v7.2.0
"symfony/flex": "^2", // v2.5.0
"symfony/framework-bundle": "7.2.*", // v7.2.4
"symfony/http-client": "7.2.*", // v7.2.4
"symfony/monolog-bundle": "^3.0", // v3.10.0
"symfony/property-access": "7.2.*", // v7.2.3
"symfony/property-info": "7.2.*", // v7.2.3
"symfony/runtime": "7.2.*", // v7.2.3
"symfony/serializer": "7.2.*", // v7.2.4
"symfony/stimulus-bundle": "^2.13", // v2.23.0
"symfony/twig-bundle": "7.2.*", // v7.2.0
"symfony/ux-turbo": "^2.13", // v2.23.0
"symfony/yaml": "7.2.*", // v7.2.3
"symfonycasts/tailwind-bundle": "^0.9.0", // v0.9.0
"twig/extra-bundle": "^2.12|^3.0", // v3.20.0
"twig/twig": "^2.12|^3.0" // v3.20.0
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^4.0", // 4.0.0
"symfony/debug-bundle": "7.2.*", // v7.2.0
"symfony/maker-bundle": "^1.52", // v1.62.1
"symfony/stopwatch": "7.2.*", // v7.2.4
"symfony/web-profiler-bundle": "7.2.*", // v7.2.4
"zenstruck/foundry": "^2.2" // v2.3.8
}
}
What a surprise! I'm so happy to hear your voice again, Ryan – that really made my day. I'm going to enjoy every moment of this new course!