Ejemplos de Laravel
www.onlinetis.com
Aquí tienes ejemplos de conceptos clave en Laravel, un popular framework de PHP para desarrollar aplicaciones web.
1. Migraciones (bases de datos)
Las migraciones en Laravel son como un control de versiones para tu base de datos. Permiten crear, modificar o eliminar tablas de forma programática. Este ejemplo crea una tabla posts
con columnas para el título, el contenido y una clave foránea para el autor.
database/migrations/YYYY_MM_DD_HHMMSS_create_posts_table.php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
Para ejecutar esta migración, usarías el comando php artisan migrate
en tu terminal.
2. Modelos y Eloquent
Eloquent es el ORM (Object-Relational Mapper) de Laravel. Un modelo de Eloquent representa una tabla en tu base de datos. Este ejemplo define un modelo Post
y la relación con el modelo User
.
app/Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
// Define los campos que se pueden asignar masivamente
protected $fillable = ['title', 'content', 'user_id'];
/**
* Un post pertenece a un usuario.
*/
public function user()
{
return $this->belongsTo(User::class);
}
}
3. Rutas y Controladores
Las rutas de Laravel dirigen las peticiones HTTP a la lógica de la aplicación. Los controladores son clases que manejan la lógica de negocio para una o más rutas.
routes/web.php
(Ruta)
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
// Muestra todos los posts
Route::get('/posts', [PostController::class, 'index']);
// Muestra un post específico
Route::get('/posts/{id}', [PostController::class, 'show']);
app/Http/Controllers/PostController.php
(Controlador)
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all(); // Obtiene todos los posts de la base de datos
return view('posts.index', ['posts' => $posts]); // Pasa los posts a la vista
}
public function show($id)
{
$post = Post::findOrFail($id); // Busca un post por su ID
return view('posts.show', ['post' => $post]); // Pasa el post a la vista
}
}
4. Vistas y Blade
Blade es el motor de plantillas de Laravel. Las vistas son archivos que contienen el HTML de tu aplicación y pueden mostrar datos dinámicamente usando la sintaxis de Blade.
resources/views/posts/index.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Posts</title>
</head>
<body>
<h1>Lista de Posts</h1>
<ul>
@foreach ($posts as $post)
<li>
<a href="/posts/{{ $post->id }}">{{ $post->title }}</a>
</li>
@endforeach
</ul>
</body>
</html>
La sintaxis @foreach
de Blade te permite iterar sobre un array, y {{ $post->id }}
muestra el valor de la propiedad id
del objeto $post
.