Cada uno puede hacerlo de la manera más conveniente posible, recordar que éstos son ejemplos básicos, se puede tomar el código y mejorarlo, están en todo su derecho hacerlo. Tomar en cuenta la seguridad, las mejores prácticas, etc.

Inicio

En ésta cuarta parte, mostraré cómo crear modelos, operaciones con base de datos, etc.

Vamos a crear una tabla llamada Posts, ésta tabla almacenará posts, digamos artículos, publicaciones etc., de tal manera que pondremos en práctica las siguientes acciones:

  • Crear Migración
  • Crear Modelo
  • Crear Controlador

Y además, crearemos las funciones o métodos básicos de agregar, eliminar, buscar, listar utilizando ajax.

Posts Admin

La idea es crear una mini aplicación web para crear, modificar, eliminar y consultar posts desde base de datos, esa es la idea general.

Aquí se pueden descargar los archivos de éste artículo https://github.com/jesusferm/laravel-crud-four

1.- Crear la tabla posts

Para crear la migración, se ejecuta el siguiente comando, el cual incluye el nombre de la tabla que será posts, y se creará un archivo en la ruta database/migrations/create_posts_table.php la cual vamos a modificar de acuerdo a lo que necesitamos

php artisan make:migration create_posts_table

Abrimos el archivo y agregamos lo siguiente:

<?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->bigIncrements('id');
			$table->string('title');
			$table->string('desc');
			$table->string('slug');
			$table->string('files');
			$table->string('image');
			$table->enum('status', ['pendiente','publicado']);
			$table->integer('user_id');
			$table->timestamps();
		});
	}

	/**
	 * Reverse the migrations.
	 *
	 * @return void
	 */
	public function down()
	{
		Schema::dropIfExists('posts');
	}
}

Ahora ejecutamos el comando migration para crear la tabla en la base de datos:

/opt/lampp/bin/php artisan migrate

Y si revisamos la base de datos, desde phpmyadmin, ahí debe haber una tabla con el nombre de posts.

2.- Crear Modelo para la tabla posts

Ahora crearemos el modelo que se usará para posts, éste archivo se crea en la ruta app/ y contiene los campos que son accesibles a la base de datos.

php artisan make:model Posts

Éste archivo lo modificamos de la siguiente manera:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Posts extends Model
{
	protected $fillable = ['desc', 'slug', 'files', 'image', 'status', 'user_id'];
}

3 Crear controlador para Posts

El controlador contiene toda la lógica de negocio de ABC que se requiere, lo de agregar, eliminar, consultar etc.

El comando genera el archivo PostsController.php en el directorio app/Http/Controllers.

php artisan make:controller TodoController --resource

Ahora modificaremos los routes, los routes son la forma en la que se accederá a la información, de cómo estará conformada la url: abrir el archivo routes/web.php y agregar los siguiente:

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('main');
});

Auth::routes();

/**
 * se redirecciona a la lista de registros que tenga el usuario*/
Route::get('/home', 'PostsController@index')->name('home');

Route::group(['middleware' => 'auth'], function () {
    Route::resource('/posts', 'PostsController');
});

Route::get('/add', 'PostsController@create');
Route::get('/postinsert', 'PostsController@ajaxAdd');
Route::post('/postinsert', 'PostsController@ajaxAdd');
Route::get('/postupdate', 'PostsController@ajaxUpdate');
Route::post('/postupdate', 'PostsController@ajaxUpdate');
Route::post('/postdelete', 'PostsController@ajaxDelete');

Route::post('/accountupdate', 'UsersController@upProfile');
Route::post('/upimage', 'UsersController@upImage');
Route::post('/loadimage', 'UsersController@loadImage');
Route::post('/uppassword', 'UsersController@upPassword');

Route::get('/post/{slug?}', ['as' => 'posts.post', 'uses' => 'PostsController@view']);

Route::post('/page', 'PostsController@load');

Route::get('/{slug?}', ['as' => 'home.view', 'uses' => 'HomeController@view']);

En el controlador PostsController tendremos todas las funciones completas de administración de los post de las base de datos:

Posts controller

No pondré todo el contenido del controlador, ya que es mucho, sin embargo pueden descargar el código del proyecto de github.

La vistas completas tendremos el siguiente resultado:

Vistas

Las vistas para la administración de posts, están dentro de la carpeta resources/views/posts/ ahí están todas las vistas que se usarán, añadí algunas funcionalidad extras, como ajax, en algunas funciones, sólo para que se pueda aprecia el funcionamiento del mismo, para la siguiente entrega, se realizará paginación en la vista principal y vista lectura de los posts.

Gracias y eso sería todo por ahora.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *