{"id":1801,"date":"2024-08-03T08:24:54","date_gmt":"2024-08-03T06:24:54","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=1801"},"modified":"2024-08-03T08:24:55","modified_gmt":"2024-08-03T06:24:55","slug":"18-definiendo-operaciones-crud-del-modelo","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/poo-php\/18-definiendo-operaciones-crud-del-modelo\/","title":{"rendered":"18. Definiendo operaciones CRUD del Modelo"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo vamos a tratar de hacer el <strong>esquema<\/strong> y desarrollar todo lo necesario para aplicar el patr\u00f3n <strong>MVC<\/strong> en el inicio de una aplicaci\u00f3n <strong>PHP<\/strong>. Lo primero que haremos ser\u00e1 crear un archivo <strong>SQL<\/strong> . Vamos a definir cuales van a ser todas esas operaciones <strong>CRUD<\/strong> en base a las entidades que necesitamos generar, y que la aplicaci\u00f3n estar\u00e1 consumiendo. Crearemos un archivo denominado <em>peliculas_crud.sql<\/em> que llevar\u00e1 la sintaxis que iremos incluyendo en este cap\u00edtulo.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Lo primero que crearemos en nuestro archivo es el esquema de lo que vamos a necesitar hacer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/*\nLISTADO DE OPERACIONES CRUD\n*\/\n\n\/*\nTENEMOS 3 ENTIDADES\nmovies\n&nbsp; &nbsp; Crear pel\u00edculas y series\n&nbsp; &nbsp; Actualizar pel\u00edculas y series\n&nbsp; &nbsp; Eliminar pel\u00edculas y series\n&nbsp; &nbsp; Buscar todas las pel\u00edculas y series\n&nbsp; &nbsp; Buscar una pel\u00edcula o serie por title, author, actors o genres\n&nbsp; &nbsp; Buscar una pel\u00edcula o serie por categor\u00eda\n&nbsp; &nbsp; Buscar un pel\u00edcula o serie por status\nstatus\n&nbsp; &nbsp; Crear un status\n&nbsp; &nbsp; Actualizar status\n&nbsp; &nbsp; Eliminar status\n&nbsp; &nbsp; Buscar todos los status\n&nbsp; &nbsp; Buscar un status por su status_id\nusers\n&nbsp; &nbsp; Crear usuario\n&nbsp; &nbsp; Actualizar usuario\n&nbsp; &nbsp; &nbsp; &nbsp; Datos generales\n&nbsp; &nbsp; &nbsp; &nbsp; Passwd\n&nbsp; &nbsp; Eliminar usuario\n&nbsp; &nbsp; Buscar todos los usuarios\n&nbsp; &nbsp; Buscar un usuario en concreto por:\n&nbsp; &nbsp; &nbsp; &nbsp; user\n&nbsp; &nbsp; &nbsp; &nbsp; email\n&nbsp; &nbsp; &nbsp; &nbsp; role\n*\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente paso ser\u00e1 crear dichas <strong>consultas<\/strong> con c\u00f3digo <strong>SQL<\/strong>. Las primeras <strong>consultas<\/strong> trabajan sobre la <strong>tabla <\/strong><em>movies<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/* SENTENCIAS *\/\n-- movies\n-- Crear pel\u00edculas y series\nINSERT INTO movies SET imdb_id = 'tt3749900', title = 'Gotamm',\nplot = '', author = '', actors = '', country = '',\npremiere = '2014', trailer = '', poster = '', rating = 8.0,\ngenres = 'Cine, Drama, Thriller', category = 'Serie', status = 3;\n\n-- actualizar pel\u00edculas y series\nUPDATE movies SET title = 'Ghotam' WHERE imdb_id = 'tt3749900';\n\n-- eliminar pel\u00edculas y series\nDELETE FROM movies WHERE imdb_id = 'tt3749900';\n\n-- buscar todas las pel\u00edculas\nSELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country\nm.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status\nFROM movies AS m\nINNER JOIN status AS s\nON m.status = s.status_id;\n\n-- buscar por title, author, actors o genres\nSELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country\nm.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status\nFROM movies AS m\nINNER JOIN status AS s\nON m.status = s.status_id\nWHERE MATCH(m.title, m.author, m.actors, m.genres)\nAGAINST('drama' IN BOOLEAN MODE);\n\n-- buscar por una categor\u00eda\nSELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country\nm.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status\nFROM movies AS m\nINNER JOIN status AS s\nON m.status = s.status_id\nWHERE m.category = 'Movie';\n\n-- buscar una pel\u00edcula o serie por status\nSELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country\nm.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status\nFROM movies AS m\nINNER JOIN status AS s\nON m.status = s.status_id\nWHERE m.status = 1;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente paso es generar las <strong>consultas<\/strong> para la <strong>tabla <\/strong><em>status<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">-- status\n-- Crear status\nINSERT INTO status SET status_id = 0, status = 'Otro estado';\n\n-- Actualizar status\nUPDATE status SET status = 'Other status' WHERE status_id = 6;\n\n-- Eliminar status\nDELETE FROM status WHERE status_id = 6;\n\n-- Buscar todos los status\nSELECT * FROM status;\n\n-- Buscar un status en particular\nSELECT * FROM status WHERE status_id =3;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El siguiente paso es generar las <strong>sentencias<\/strong> que manejen la <strong>tabla<\/strong> <em>users<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">-- users\n-- Crear usuario\nINSERT INTO users SET user = '@usuario', email = 'user@user.com',\nnombre = 'Francisco', birthday = '1972-02-02', pass = MD5('pass'), role = 'Admin';\n\n-- Actualizar usuario\nUPDATE users SET name = 'Soy un usuario', birthday = '1994-02-03', role = 'User'\nWHERE user = 'Francisco' AND email = 'user@user.com';\n\n-- Actualizar pass\nUPDATE users SET pass = MD5('nuevopass')\nWHERE user = 'Francisco' AND email = 'user@user.com';\n\n-- Eliminar usuario\nDELETE FROM users\nWHERE user = 'Francisco' AND email = 'user@user.com';\n\n-- Buscar todos los usuarios\nSELECT * FROM users;\n\n-- Buscar usuarios por user\nSELECT * FROM users WHERE user = 'Francisco';\n\n-- Buscar usuarios por email\nSELECT * FROM users WHERE email = 'user@user.com';\n\n-- Buscar usuarios por role\nSELECT * FROM users WHERE role = 'Admin';<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo vamos a tratar de hacer el esquema y desarrollar todo lo necesario para aplicar el patr\u00f3n MVC en el&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1735,"menu_order":17,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-1801","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo vamos a tratar de hacer el esquema y desarrollar todo lo necesario para aplicar el patr\u00f3n MVC en el...","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1801"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1801\/revisions"}],"predecessor-version":[{"id":1803,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1801\/revisions\/1803"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1735"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}