Laravel 1 Flashcards

1
Q

Cómo se crea un proyecto en laravel con composer?

A

En la terminal:
composer create-project laravel/laravel nombre-del-proyecto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qué es artisan?

A

Es una linea de comandos creada para poder trabajar con laravel. Nos da comandos pre-establecidos. Para usarla siempre se pone php antes.
Ej. en la terminal:
php artisan comando-a-usar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cómo hacemos para ejecutar el server con artisan?

A

php artisan serve

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cómo funcionan las vistas (views) con Laravel?

A

Laravel usa blade:
Es un motor de plantillas que permite abrir directivas en vez de <?php ?> en el html.

Estas directivas funcionan entre bloques del tipo

@if(condicion)
    codigo
@endif

y entre {{}} para imprimir cosas:

<h2> {{ $obj->name }} </h2>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Dónde se encuentras las rutas (routes) de mi aplicación?

A

Se encuentran en la carpeta “routes” en el archivo web.php

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cómo hacemos para usar en model desde el controlador?

A

Arriba de todo hay que poner:

use App\Models\Category;

y despues para usarlo tengo que llamarlo con mayuscula (en este ejemplo haría Category) y para usar un método de la clase de ese objeto lo llamo con :: (doble dos puntos).

Ejemplo:

Quiero un array de todas las categorias, entonces hago:

    $categories = Category::all();

y ahora tengo un array de todas las categorias en $category.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cómo levanta el router un request y que necesita para hacerlo?

A

1) Primero necesito llamar arriba a los controllers y al Router. Eso lo hago así:

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TodosController;
use App\Http\Controllers\CategoriesController;

2)Después uso Route y llamo al método que requiero. Por ejemplo un get y le paso la ruta que va a pedir desde el navegador, el controller que tiene que usar y le pongo name en el caso de que en la applicación le de un nombre distino a la ruta.

Route::get('/tareas', [TodosController::class, 'index'])->name('todos');
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qué es cada parte de la siguiente linea de código del router?

Route::get(‘/tareas’, [TodosController::class, ‘index’])->name(‘todos’);

A

Route : : get ( ‘/tareas’, [ TodosController : : class, ‘index’ ] ) -> name( ‘todos’ );

1) Usa el Router y su método estático get

2) Los parametros que se le pasan son
- La ruta que se pasa desde la url
- Un array con el controller y separado por coma, el método del controller a usar.
- el name indicando que en la app se lo llama por la ruta ‘todos’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cómo se hace una plantilla para rellenarla con contenido?

A

Se hace una view por ejemplo app.blade.php

En esa view se hace el html y en la parte donde quiero que se le inyecte contenido pongo @yield(‘content’)

Para usar esa plantilla hago otra view y desde ella llamo a app poniendo al principio del archivo

@extends(‘app’)

Luego pongo @section(‘content’) y entre esa directiva y su fin ( @endsection ) pongo el contenido de ese archivo.

Ej.
@extends(‘app’)
@section(‘content’)
<div>Hola</div>
@endsection

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cómo haces en el router si queres retornar directamente un vista?

A

Router::get ( ‘/todos’ , function ( ){
return view ( ‘todos.index’);
}

Entonces retorna la vista index que está en la carpeta todos dentro de las views.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qué son las migraciones?

A

Las migraciones en la Laravel son como un control de versiones de la base de datos, las cuales nos permiten gestionar de una mejor manera los cambios que se van realizando con el tiempo.

Permiten definir y aplicar cambios en la estructura de la base de datos de forma ordenada y sencilla.

Es lo que usamos en la base de datos en vez de queries.
Hacen referencia a un control de versiones para nuestra base de datos.
Se usan como una capa de abstracción llamada eloquent.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qué es un ORM?

A

Object Relational Mapper: un mapeador relacional de objetos.

Un ORM es un modelo de programación que permite mapear las estructuras de una base de datos relacional.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qué te permite hacer eloquent?

A

Eloquent es un ORM que nos facilita el contacto de nuestra aplicación en Laravel con una base de datos relacional donde solo tendremos que hacer un llamado al modelo de la entidad que se necesita y empezar a operar sobre ella desde el controlador.

Tener una relación entre nuestras tablas y nuestros modelos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Cómo se crea un nuevo modelo con su respectiva tabla?

A

1) Si todavia no la cree, creo la db en mysql. (CREATE DATABASE ejemplo) y la agrego en .env donde dice DB_DATABASE=nombre-de-mi-db

2) En la terminal:
php artisan make:model Nombre-del-modelo -m

el -m es de migration. Es para que cuando cree el modelo también cree su migración.

3)voy a la carpeta database busco la de migrations en el proyecto y busco el archivo que tiene fecha_create_todos_table

En ese archivo agrego los campos que necesita mi tabla en la public function up.
Ejemplo:

public function up()
{
    Schema::create('todos', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->timestamps();
    });
}

Defino de esa manera si el campo es string, o integer etc.

4) Por último voy a la terminal y corro la migración:
php artisan migrate

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Si me equivoqué en en mi tabla y ya hice la migración, como hago para deshacer la migración y corregir mi error?

A

corro en la terminal:

php artisan migrate:rollback

eso deshace la migración y puedo y me permite hacer los cambio que necesite y despues volver a correrla.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Donde están los controllers en el proyecto?

A

App=>Http=>Controllers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Cómo creo un controlador?

A

php artisan make:controller TodosController

atención que se pone en plural xq TodosController, CategoriesController, …etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Cuál es la convención de nombres para los métodos en Laravel?

A

index -> para mostrar todos los elementos

store -> para guardar un elemento

update -> para actualizar un elemento

destroy -> para eliminar un elemento

edit -> para mostrar el formulario de edición

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Donde trabajo los métodos de los objetos?

A

En el controlador.

Ejemplo:

class TodosController extends Controller
{
public function store(){
….
}
}

20
Q

Cómo se hace la validación de un elemento que quiero insertar en mi base de datos?

A

Dentro del método store en el controller uso el metodo de la request llamado validate. A validate se le pasa un array asociativo donde se define que se espera de cada campo de la tabla.

Ejemplo

 public function store(Request $request){
     $request -> validate([
              'title'=>'required|min:3'
      ])
  
   $todo=new Todo;
   $todo->title = $request->title;
   $todo->save(); 

   return redirect()->route('todos')->with('success','tarea agregada correctamente'); }

De esta manera se establece que el campo title tiene que ser required y tiene que tener un mínimo de 3 caracteres.

21
Q

Cómo se le da al método store acceso a la request?

A

se le escribe como parámetro Request $request

Ejemplo:

 public function store(Request $request){
      $request -> validate([
                 'title'=>'required|min:3'
       ])
 }
22
Q

Como se escribe el método store en el controller?

A

use App\Models\Todo;

  class TodosController extends Controller
  {
       public function store(Request $request) 
       {
              $request -> validate([
                         'title'=>'required|min:3'
               ])
  
                $todo=new Todo;
                $todo->title = $request->title;
                $todo->save(); 

                 return redirect()->route('todos')->with('success','tarea agregada correctamente');
               }
             }
23
Q

Cómo se levanta el post para guardar un elemento en la bd desde route?

A

En routes/web.php

use App\Http\Controllers\TodoController;

Route : : post ( ‘/todos’, [ TodosController : : class, ‘store’ ]);

24
Q

Cómo hago si quiero cambiar el nombre de la ruta sin tener que cambiar todo el código?

A

uso ->name(‘…….’);

Ejemplo:

si tengo :

Route : : post ( ‘/todos’, [ TodosController : : class, ‘store’ ]);

pero quiero que ahora desde el navegador se use tareas entonces :

Route : : post ( ‘/tareas’, [ TodosController : : class, ‘store’ ])->name( ‘todos’ );

25
Q

Cómo hago para que el formulario envie el post a la ruta correspondiente? Por ejemplo en el caso del post para hacer un store.

A

Uso route():

   <form method="POST" action="{{route('todos')}}">
  ....
 </form>
26
Q

Qué necesitan todos los formularios para funcionar por temas de seguridad?

A

Necesitan el CROSS SITE REQUEST FORGERY

@csrf

27
Q

Cómo se agrega un if en una view?

A

@if(condicion)
<div>cumple condición</div>
@endif

28
Q

Cómo recibo los mensajes de confirmación que el controller envía para confirmar que realizó una accion?

A

Por medio de session(‘key’).

Por ejemplo si se agrego algo correctamente el controller manda un array associativo con la key ‘success’

@if(session(‘success’))

<h6>{{ session('success') }}</h6>

@endif

29
Q

Cómo se maneja un error de validación en las views para mostrar el mensaje?

A

se usa @error con la variable $message

Ejemplo:

@error(‘title’)

<h6>{{ $message }}</h6>

@enderror

30
Q

Cómo se hace el boton de delete en el form?

A

Se usa un form:

  <form action="{{route(todos-destroy, [$todo->id])}}" method="POST">
      @csrf
      @method('DELETE')
       <button> eliminar </button>
  </form>
31
Q

Cómo hago la route para delete?

A

Route::delete(‘/tareas/{id}’, [TodosController::class, ‘destroy’])->name(‘todos-destroy’);

el query parameter se pone despues de / y entre {}

32
Q

Cómo hago el controller para delete?

A

public function destroy($id){
$todo=Todo::find($id);
$todo->delete();
return redirect()->route(‘todos’)->with(‘success’,’tarea eliminada correctamente’);
}

33
Q

Cómo se hace el link para ir al form para modificar algo?

A

< a href=”{{ route ( ‘todos-show’, [‘id’=>$todo->id ] ) }}”>
{{$todo->title}}
</a>

34
Q

Cómo se hace el route para tomar la request hacia el form de modificar algo?

A

Route::get(‘/tareas/{id}’, [TodosController::class, ‘show’])->name(‘todos-show’);

35
Q

Cómo es el método en el controller que permite el show by id en el form de modificar?

A

public function show( $id ) {
$todo=Todo::find($id);
return view(‘todos.show’, [‘todo’=>$todo]);
}

Atención aca retornar la vista de show que esta dentro de la carpeta de todos, por eso hace todos.show .

Es distinto cuando hace un route a todos-show porque ahi esta llamando al controllador.

36
Q

Cómo hago el form para que muestre el elemento a modificar y mande a hacer la modificación?

A
<form action="{{route( 'todos-update',['id'=>$todo->id])}}" method="POST">
                  @csrf
                  @method('PATCH')
                   <input name='title' type='text' value="{{$todo->title}}">
                   <button > send </button>
</form>
37
Q

Cómo hago el route para levantar el update?

A

Route::patch(‘/tareas/{id}’, [ TodosController::class, ‘update’])->name(‘todos-update’);

38
Q

Cómo se hace una la función de update en el controller?

A
    public function update(Request $request, $id){

        $request->validate([
            'title'=> 'required|min:3'
        ]);

        $todo=Todo::find($id);
        $todo->title=$request->title;
        $todo->save();

        return redirect()->route('todos')->with('success','Tarea actualizada con exito.');

    }
39
Q

Cómo se hace una la función de update en el controller?

A
public function update(Request $request, $id){
      $request -> validate([
            'title'=> 'required|min:3'
      ]);
      $todo=Todo::find($id);
      $todo->title=$request->title;
      $todo->save();
      return redirect()->route('todos')->with('success','Tarea actualizada con exito.');
}
40
Q

Cómo se hace un console log de la request?

A

dd($request);

41
Q

Qué es resource controller?

A

Un Resource Controller en Laravel es un tipo especial de controlador que se utiliza para gestionar las operaciones CRUD (crear, leer, actualizar y borrar) relacionadas con un recurso.

42
Q

Cómo se hace un resource controller?

A
php artisan make:controller CategoriesController --resource

cuando hacemos esto laravel crea directamente todas las public functions en el controlador (aunque nosotros tenemos que hacer el funcionamiento de estas).

43
Q

Cómo ves la lista de rutas disponibles en tu aplicación?

A

php artisan route:list

44
Q

Cómo se ve el status de una migración?

A

php artisan migrate:status

45
Q

Cómo se crea una tabla que tiene un campo en común con otra?

A

Checkear bien cuál es el orden porque no estoy segura.

1) php artisan make:migration add_category_id_to_todos_table –table=todos

2)Después en el archivo de migrations add_category_id_to_todos_table:

public function up(){
 Schema::table('todos', function(Blueprint $table){
     $table->biginteger('category_id')->unsigned();
     $table 
                 ->foreign('category_id');
                 ->reference('id');
                 ->on('categories');
                 ->after('title');
})
}

3) corro la migracion php artisan migrate

4)En el category model:

use App\Models\Todo

class category extends model{
 use hasFactory;
  public function todos(){
     return this->hasMany(Todo::class)
  }
}
46
Q

Cómo se maneja desde el router un controlador que es resource?

A

Para poder usar estos recurse tenemos que hacer el siguiente router:

use App\Http\Controllers\CategoriesController;

Route::resource('categories', CategoriesController::class);

y esto maneja todo, no hace falta hacer más routes, esa sirve para todo.