Sitio web: estructura inicial

3/18
Recursos

Aportes 13

Preguntas 7

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Les comparto el paso a paso:
Crear proyecto

laravel new api-8

Entrar a la carpeta y crear Model-Controller-Migration-Factory

cd api-8
php artisan make:model Post -cmf

migrations/鈥ost

  public function up()
  {
    Schema::create('posts', function (Blueprint $table) {
      $table->id();

      $table->unsignedBigInteger('user_id');
      $table->string('title');
      $table->string('slug')->unique();
      $table->text('content');

      $table->timestamps();

      $table->foreign('user_id')->references('id')->on('users');
    });
  }

PostFactory.php

  public function definition()
  {
    return [
      'user_id' => rand(1,10),
      'title' => $this->faker->sentence,
      'slug' => $this->faker->slug,
      'content' => $this->faker->text(1600)
    ];
  }

DatabaseSeeder.php

  public function run()
  {
    \App\Models\User::factory(10)->create();
    \App\Models\Post::factory(120)->create();
  }

Comando de migraci贸n:

php artisan migrate --seed

Para crear mediante composer

composer create-project laravel/laravel API

Una peque帽a sugerencia a la hora de crear llaves foraneas es la de utilizar el atributo de foreignId de esta forma te ahorras el tiempo de escribir unsignedBigInteger, permitiendo que tu c贸digo sea m谩s r谩pido y legible de entender de esta forma 馃槃 :

$table->foreignId('user_id');

Esto es genial e importante, porque efectivamente estamos muy acostumbrados a siempre trabajar las rutas de Laravel directo en el archivo web.php, 驴pero no te has preguntado para qu茅 son los otros archivos? 馃憖 Es ahora cuando empezaos a trabajar con api.php

驴Soy el 煤nico que ve que el video se va trabando?

existe algo para crear diferentes ambientes de laravel? algo asi como conda?

馃憢Hola a todos, les comparto una forma para revisar si su conexi贸n con la base de datos fue exitosa usando Laravel tinker.

Primero debemos abrir nuestra consola de visual studio code e iniciamos tecleando el comando:

php artisan tinker

El siguiente paso es acceder a la instancia PDO con el siguiente comando, el cual nos devolver un objeto de PDO con la informaci贸n de la conexi贸n si todo fue exitoso, de lo contrario nos regresar谩 un error.

BD::connection()->getPdo();

Ejemplo de 茅xito de conexi贸n.

Ejemplo de un error de conexi贸n con la base de datos

Una vez conozcas el estado de tu conexi贸n puede simplemente despedirte de Laravel Tinker tecleando el comando:

exit

Si deseas consultar m谩s informaci贸n al respecto puedes revisar la documentaci贸n de Laravel Conexiones a bases de datos o sobre Tinker la consola interactiva 馃槉.

Si te fue de utilidad este informaci贸n d茅jamelo saber en los comentarios, y si gustas agregar o aportar un dato extra seria genial. 馃 Saludos a todos.

Para los que tienen dificultades al acceder a la conexi贸n de BD local, yo lo pude realizar correctamente usando XAMPP

Utilizar un IDE como PHPStorm permite recibir ayuda sobre los m茅todos posibles a utilizar en los diferentes contextos, por ejemplo cuando llamamos a Faker. As铆 ser谩 m谩s sencillo conocer los m茅todos disponibles y no usar 煤nicamente los que tiene el docente.

yo lo hago asi, importo la clase

use App\Http\Controllers\PostController;

Luego si lo importo de esta manera

Route::get('/', PostController::class, 'index')->name('index')

se me hace a mi mas corto

yo hubiera utilizado $ php artisan make:controller PostController -rmf para que me escribiera todos los metodos la API para el controlador de posts.

Hola, les comparto una forma de crear los factory y que el slug realmente sea el slug del post, o sea鈥 Si el titulo del post es 鈥淗ola Platzi鈥 el slug sera 鈥樷榟ola-platzi鈥欌

En donde creamos el factory de Post primero declaramos:

use Illuminate\Support\Str;
use App\Models\User;

Despues donde creamos el factory:

public function definition()
    {
        //Definimos una frase falsa para el titulo
        $title = $this->faker->sentence;
        //Con Str llamamos al metodo slug y le pasamos el titulo
        $slug = Str::slug($title);
        //Creamos el factory
        return [
            //De esta forma obtenemos un usuario aleatorio y colocamos el ID (asi no dependemos de que los ids obligatoriamente sean del 1 al 10)
            'user_id' => User::all()->random()->id,
            'title' => $title,
            'slug' => $slug,
            'content' => $this->faker->text(1600),
        ];
    }

me quede en migration

could not find driver (SQL: select * from information_schema.tables where table_schema = api and table_name = migrations and table_type = 鈥楤ASE TABLE鈥)