Configuración de relaciones con el supermercado crud
-
27-10-2019 - |
Pregunta
Tengo 2 tablas
Users Table => id , username
OrdersTable => order_id,user_id, qty,total
Necesito vincular estas dos tablas.
ID y user_id.
¿Cómo puedo hacer esto con el supermercado?
Solución
Si estás usando OrdersTable
Como su tabla principal, puede usar un 1:1
relación usando set_relation (). Esto sería si estuviera viendo un pedido y quisiera ver/establecer a qué usuario pertenece el pedido.
$crud->set_table('OrdersTable');
$crud->set_relation('id','UsersTable','username');
Esto le permitirá seleccionar qué usuario para un pedido en particular.
Sin embargo, presumiblemente un usuario puede tener muchos pedidos: 1:n
relación. Este sería el caso si Userstable es su tabla principal, es decir, está viendo un user
en el crud y quiero ver todas las órdenes asociadas.
Este método requiere una tabla intermediaria, con la cual vincula las dos tablas existentes, y un ligero cambio a la estructura de su tabla existente. Necesitarías eliminar user_id
en el OrdersTable
. La tabla intermediaria, por el argumento llamado UserOrdersTable
requeriría las siguientes columnas.
user_id INT
order_id INT
priority INT
Luego puede agregar la relación usando el set_relation_n_n () método.
Entonces puedes revertir el set_relation_n_n()
Llame para ver el OrdersTable
Para que pueda ver qué usuario hizo un pedido.
Para resumir, un 1:n
relación usando set_relation_n_n()
le permitirá ver los pedidos de un usuario y un usuario para un pedido.
Otros consejos
Si te refieres a la consulta, entonces;
select u.id, u.username, o.order_id, o.qty, o.total from users u left join orders o on(o.user_id = u.id) where 1=1