En este capítulo vamos a tratar de hacer el esquema y desarrollar todo lo necesario para aplicar el patrón MVC en el inicio de una aplicación PHP. Lo primero que haremos será crear un archivo SQL . Vamos a definir cuales van a ser todas esas operaciones CRUD en base a las entidades que necesitamos generar, y que la aplicación estará consumiendo. Crearemos un archivo denominado peliculas_crud.sql que llevará la sintaxis que iremos incluyendo en este capítulo.
Lo primero que crearemos en nuestro archivo es el esquema de lo que vamos a necesitar hacer.
Ejm
/* LISTADO DE OPERACIONES CRUD */ /* TENEMOS 3 ENTIDADES movies Crear películas y series Actualizar películas y series Eliminar películas y series Buscar todas las películas y series Buscar una película o serie por title, author, actors o genres Buscar una película o serie por categoría Buscar un película o serie por status status Crear un status Actualizar status Eliminar status Buscar todos los status Buscar un status por su status_id users Crear usuario Actualizar usuario Datos generales Passwd Eliminar usuario Buscar todos los usuarios Buscar un usuario en concreto por: user email role */
El siguiente paso será crear dichas consultas con código SQL. Las primeras consultas trabajan sobre la tabla movies.
Ejm
/* SENTENCIAS */ -- movies -- Crear películas y series INSERT INTO movies SET imdb_id = 'tt3749900', title = 'Gotamm', plot = '', author = '', actors = '', country = '', premiere = '2014', trailer = '', poster = '', rating = 8.0, genres = 'Cine, Drama, Thriller', category = 'Serie', status = 3; -- actualizar películas y series UPDATE movies SET title = 'Ghotam' WHERE imdb_id = 'tt3749900'; -- eliminar películas y series DELETE FROM movies WHERE imdb_id = 'tt3749900'; -- buscar todas las películas SELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country m.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status FROM movies AS m INNER JOIN status AS s ON m.status = s.status_id; -- buscar por title, author, actors o genres SELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country m.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status FROM movies AS m INNER JOIN status AS s ON m.status = s.status_id WHERE MATCH(m.title, m.author, m.actors, m.genres) AGAINST('drama' IN BOOLEAN MODE); -- buscar por una categoría SELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country m.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status FROM movies AS m INNER JOIN status AS s ON m.status = s.status_id WHERE m.category = 'Movie'; -- buscar una película o serie por status SELECT m.imdb_id, m.title, m.plot, m.author, m.actors, m.country m.premiere, m.poster, m.trailer, m.rating, m.genres, m.category, s.status FROM movies AS m INNER JOIN status AS s ON m.status = s.status_id WHERE m.status = 1;
El siguiente paso es generar las consultas para la tabla status.
Ejm
-- status -- Crear status INSERT INTO status SET status_id = 0, status = 'Otro estado'; -- Actualizar status UPDATE status SET status = 'Other status' WHERE status_id = 6; -- Eliminar status DELETE FROM status WHERE status_id = 6; -- Buscar todos los status SELECT * FROM status; -- Buscar un status en particular SELECT * FROM status WHERE status_id =3;
El siguiente paso es generar las sentencias que manejen la tabla users.
Ejm
-- users -- Crear usuario INSERT INTO users SET user = '@usuario', email = 'user@user.com', nombre = 'Francisco', birthday = '1972-02-02', pass = MD5('pass'), role = 'Admin'; -- Actualizar usuario UPDATE users SET name = 'Soy un usuario', birthday = '1994-02-03', role = 'User' WHERE user = 'Francisco' AND email = 'user@user.com'; -- Actualizar pass UPDATE users SET pass = MD5('nuevopass') WHERE user = 'Francisco' AND email = 'user@user.com'; -- Eliminar usuario DELETE FROM users WHERE user = 'Francisco' AND email = 'user@user.com'; -- Buscar todos los usuarios SELECT * FROM users; -- Buscar usuarios por user SELECT * FROM users WHERE user = 'Francisco'; -- Buscar usuarios por email SELECT * FROM users WHERE email = 'user@user.com'; -- Buscar usuarios por role SELECT * FROM users WHERE role = 'Admin';