{"id":2769,"date":"2020-06-15T13:10:06","date_gmt":"2020-06-15T18:10:06","guid":{"rendered":"http:\/\/linuxitos.com\/main\/?p=2769"},"modified":"2020-06-16T18:29:10","modified_gmt":"2020-06-16T23:29:10","slug":"parte-4-laravel-7-xampp-fedora-32","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/parte-4-laravel-7-xampp-fedora-32\/","title":{"rendered":"Parte 4: Laravel 7, XAMPP | Fedora 32"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"475\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-1024x475.png\" alt=\"\" class=\"wp-image-2770\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-1024x475.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-300x139.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-768x357.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-1536x713.png 1536w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-2048x951.png 2048w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/fc_xampp_laravel-3-1600x743.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Cada uno puede hacerlo de la manera m\u00e1s conveniente posible, recordar que \u00e9stos son ejemplos b\u00e1sicos, se puede tomar el c\u00f3digo y mejorarlo, est\u00e1n en todo su derecho hacerlo. Tomar en cuenta la seguridad, las mejores pr\u00e1cticas, etc.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Inicio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En \u00e9sta cuarta parte, mostrar\u00e9 c\u00f3mo crear modelos, operaciones con base de datos, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a crear una tabla llamada Posts, \u00e9sta tabla almacenar\u00e1 posts, digamos art\u00edculos, publicaciones etc., de tal manera que pondremos en pr\u00e1ctica las siguientes acciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Crear Migraci\u00f3n<\/li><li>Crear Modelo<\/li><li>Crear Controlador<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Y adem\u00e1s, crearemos las funciones o m\u00e9todos b\u00e1sicos de agregar, eliminar, buscar, listar utilizando ajax.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Posts Admin<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La idea es crear una mini aplicaci\u00f3n web para crear, modificar, eliminar y consultar posts desde base de datos, esa es la idea general.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed se pueden descargar los archivos de \u00e9ste art\u00edculo <a href=\"https:\/\/github.com\/jesusferm\/laravel-crud-four\">https:\/\/github.com\/jesusferm\/laravel-crud-four<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.- Crear la tabla posts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear la migraci\u00f3n, se ejecuta el siguiente comando, el cual incluye el nombre de la tabla que ser\u00e1 posts, y se crear\u00e1 un archivo en la ruta database\/migrations\/create_posts_table.php la cual vamos a modificar de acuerdo a lo que necesitamos<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">php artisan make:migration create_posts_table<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-02-25-1024x372.png\" alt=\"\" class=\"wp-image-2773\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-02-25-1024x372.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-02-25-300x109.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-02-25-768x279.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-02-25.png 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Abrimos el archivo y agregamos lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">&lt;?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreatePostsTable extends Migration\n{\n\t\/**\n\t * Run the migrations.\n\t *\n\t * @return void\n\t *\/\n\tpublic function up()\n\t{\n\t\tSchema::create('posts', function (Blueprint $table) {\n\t\t\t$table->bigIncrements('id');\n\t\t\t$table->string('title');\n\t\t\t$table->string('desc');\n\t\t\t$table->string('slug');\n\t\t\t$table->string('files');\n\t\t\t$table->string('image');\n\t\t\t$table->enum('status', ['pendiente','publicado']);\n\t\t\t$table->integer('user_id');\n\t\t\t$table->timestamps();\n\t\t});\n\t}\n\n\t\/**\n\t * Reverse the migrations.\n\t *\n\t * @return void\n\t *\/\n\tpublic function down()\n\t{\n\t\tSchema::dropIfExists('posts');\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora ejecutamos el comando migration para crear la tabla en la base de datos:<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">\/opt\/lampp\/bin\/php artisan migrate<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-10-07-1024x372.png\" alt=\"\" class=\"wp-image-2774\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-10-07-1024x372.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-10-07-300x109.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-10-07-768x279.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-10-07.png 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Y si revisamos la base de datos, desde phpmyadmin, ah\u00ed debe haber una tabla con el nombre de posts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.- Crear Modelo para la tabla posts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora crearemos el modelo que se usar\u00e1 para posts, \u00e9ste archivo se crea en la ruta app\/ y contiene los campos que son accesibles a la base de datos.<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">php artisan make:model Posts<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-18-37-1024x372.png\" alt=\"\" class=\"wp-image-2776\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-18-37-1024x372.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-18-37-300x109.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-18-37-768x279.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-09-18-37.png 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ste archivo lo modificamos de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Posts extends Model\n{\n\tprotected $fillable = ['desc', 'slug', 'files', 'image', 'status', 'user_id'];\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3 Crear controlador para Posts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El controlador contiene toda la l\u00f3gica de negocio de ABC que se requiere, lo de agregar, eliminar, consultar etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El comando genera el archivo PostsController.php en el directorio app\/Http\/Controllers.<\/p>\n\n\n\n<pre style=\"background: rgb(54, 63, 72); border-radius: 6px; border: 0px; box-sizing: border-box; color: white; font-family: menlo, monaco, monospace; font-style: inherit; font-weight: inherit; line-height: 15.68px; margin-bottom: 1.1em; max-width: 100%; outline: 0px; overflow: auto; padding: 13.125px 16.4062px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;\">php artisan make:controller TodoController --resource<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-10-16-55-1024x372.png\" alt=\"\" class=\"wp-image-2779\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-10-16-55-1024x372.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-10-16-55-300x109.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-10-16-55-768x279.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-10-16-55.png 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora modificaremos los routes, los routes son la forma en la que se acceder\u00e1 a la informaci\u00f3n, de c\u00f3mo estar\u00e1 conformada la url: abrir el archivo routes\/web.php y agregar los siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nuse Illuminate\\Support\\Facades\\Route;\n\n\/*\n|--------------------------------------------------------------------------\n| Web Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register web routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| contains the \"web\" middleware group. Now create something great!\n|\n*\/\n\nRoute::get('\/', function () {\n    return view('main');\n});\n\nAuth::routes();\n\n\/**\n * se redirecciona a la lista de registros que tenga el usuario*\/\nRoute::get('\/home', 'PostsController@index')->name('home');\n\nRoute::group(['middleware' => 'auth'], function () {\n    Route::resource('\/posts', 'PostsController');\n});\n\nRoute::get('\/add', 'PostsController@create');\nRoute::get('\/postinsert', 'PostsController@ajaxAdd');\nRoute::post('\/postinsert', 'PostsController@ajaxAdd');\nRoute::get('\/postupdate', 'PostsController@ajaxUpdate');\nRoute::post('\/postupdate', 'PostsController@ajaxUpdate');\nRoute::post('\/postdelete', 'PostsController@ajaxDelete');\n\nRoute::post('\/accountupdate', 'UsersController@upProfile');\nRoute::post('\/upimage', 'UsersController@upImage');\nRoute::post('\/loadimage', 'UsersController@loadImage');\nRoute::post('\/uppassword', 'UsersController@upPassword');\n\nRoute::get('\/post\/{slug?}', ['as' => 'posts.post', 'uses' => 'PostsController@view']);\n\nRoute::post('\/page', 'PostsController@load');\n\nRoute::get('\/{slug?}', ['as' => 'home.view', 'uses' => 'HomeController@view']);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En el controlador PostsController tendremos todas las funciones completas de administraci\u00f3n de los post de las base de datos:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Posts controller<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No pondr\u00e9 todo el contenido del controlador, ya que es mucho, sin embargo pueden descargar el c\u00f3digo del proyecto de github.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La vistas completas tendremos el siguiente resultado:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vistas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Las vistas para la administraci\u00f3n de posts, est\u00e1n dentro de la carpeta resources\/views\/posts\/ ah\u00ed est\u00e1n todas las vistas que se usar\u00e1n, a\u00f1ad\u00ed algunas funcionalidad extras, como ajax, en algunas funciones, s\u00f3lo para que se pueda aprecia el funcionamiento del mismo, para la siguiente entrega, se realizar\u00e1 paginaci\u00f3n en la vista principal y vista lectura de los posts.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"594\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-12-53-51-1024x594.png\" alt=\"\" class=\"wp-image-2782\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-12-53-51-1024x594.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-12-53-51-300x174.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-12-53-51-768x445.png 768w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-15-12-53-51.png 1423w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Gracias y eso ser\u00eda todo por ahora.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cada uno puede hacerlo de la manera m\u00e1s conveniente posible, recordar que \u00e9stos son ejemplos b\u00e1sicos, se puede tomar el c\u00f3digo y mejorarlo, est\u00e1n en todo su derecho hacerlo. Tomar en cuenta la seguridad, las mejores pr\u00e1cticas, etc. Inicio En \u00e9sta cuarta parte, mostrar\u00e9 c\u00f3mo crear modelos, operaciones con base de datos, etc. Vamos a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1540],"tags":[1561,1638,1587],"class_list":["post-2769","post","type-post","status-publish","format-standard","hentry","category-develepmet","tag-fedora","tag-laravel","tag-xampp"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/2769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=2769"}],"version-history":[{"count":9,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/2769\/revisions"}],"predecessor-version":[{"id":2795,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/2769\/revisions\/2795"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=2769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=2769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=2769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}