45. Diseño de la bbdd de un blog
En este capítulo, aprenderás a diseñar una base de datos sólida y escalable para tu blog administrable. Comenzaremos por comprender los conceptos fundamentales de la base de datos, como tablas, campos y relaciones. Luego, te guiaremos a través del proceso de diseño de una estructura de base de datos eficiente y fácil de mantener para tu blog. Aprenderás a crear tablas, establecer relaciones y configurar claves foráneas para garantizar que tu base de datos sea coherente y segura. También te mostraremos cómo utilizar herramientas populares como PHPMyAdmin para simplificar el proceso de diseño y gestión de la base de datos. ¡Aprovecha este capítulo para construir una base de datos sólida para tu blog!
3 comentarios
Inicia sesión para comentar
Comentarios:
-
Walter hace 2 años
-
Walter hace 2 años
? Proyecto Blog
? Creamos un nuevo proyecto Laravel con Jetstream usando Livewire y sin Teams.
laravel new blog --jet cd blog npm install
? Configuramos el archivo .env
DB_HOST=127.0.0.1
? Creamos la base de datos blog
? Corremos las migraciones y el segundo comando de npm
php artisan migrate npm run dev
? Creamos las tablas comenzando por las entidades fuertes
php artisan make:model Category -m
Completamos los campos en el método up de la migración
$table->string('name'); $table->string('slug');
php artisan make:model Post -m
Completamos los campos en el método up de la migración
$table->string('name'); $table->string('slug'); $table->text('extract'); $table->longText('body'); $table->enum('status', [1, 2])->default(1); $table->unsignedBigInteger('user_id'); $table->unsignedBigInteger('category_id'); $table->foreign('user_id')->references('id')->on('users') ->onDelete('cascade'); $table->foreign('category_id')->references('id')->on('categories') ->onDelete('cascade');
php artisan make:model Tag -m
Completamos los campos en el método up de la migración
$table->string('name'); $table->string('slug');
? Creamos la tabla intermedia post_tag
php artisan make:migration create_post_tag_table
Completamos los campos en el método up de la migración
$table->unsignedBigInteger('post_id'); $table->unsignedBigInteger('tag_id'); $table->foreign('post_id')->references('id')->on('posts') ->onDelete('cascade'); $table->foreign('tag_id')->references('id')->on('tags') ->onDelete('cascade');
? Creamos la tabla images
php artisan make:model Image -m
Completamos los campos en el método up de la migración
$table->string('url'); $table->unsignedBigInteger('imageable_id'); $table->string('imageable_type');
php artisan migrate
? Relaciones a nivel de modelo
Comenzamos con los modelos User, Category y Post.
? Relación uno a muchos entre los modelos User y Category con la tabla Post.
Agregamos lo siguiente en los modelos de User y Category:
public function posts() { return $this->hasMany(Post::class); }
En el modelo Post definimos la relación uno a muchos inversa:
public function user() { return $this->belongsTo(User::class); } public function category() { return $this->belongsTo(Category::class); }
También en el modelo Post agregamos la relación muchos a muchos:
public function tags() { return $this->belongsToMany(Tag::class); }
En el modelo Tag definimos la relación muchos a muchos:
public function posts() { return $this->belongsToMany(Post::class); }
? Relación polimórfica en el modelo Image
public function imageable() { return $this->morphTo(); }
Seguimos con el modelo Post con la relación uno a uno polimórfica:
public function image() { return $this->morphOne(Image::class, 'imageable'); }
-
Melvin Arnoldo Cardona Cota hace 2 años
consulta. se dice que la relacion posts con images es una relacion polimorfica uno a uno. pero en el ejemplo no eliminamos la columna id de la tabla images y tampoco creamos la llave primaria compuesta. cosas que se hicieron en el ejemplo del video relacion polimorfica uno a uno. gracias
-
Miguel Chuil hace 1 año
Es correcto
-