Impostazione della drogheria delle relazioni CRUD
-
27-10-2019 - |
Domanda
Ho 2 tavoli
Users Table => id , username
OrdersTable => order_id,user_id, qty,total
Devo collegare queste due tabelle.
ID e user_id.
Come posso farlo con la drogheria CRUD.
Soluzione
Se stai usando OrdersTable
Come tabella principale, puoi usare un 1:1
relazione usando set_relation (). Questo sarebbe se stavi visualizzando un ordine e volessi vedere/impostare a quale utente appartiene l'ordine.
$crud->set_table('OrdersTable');
$crud->set_relation('id','UsersTable','username');
Ciò ti consentirà di selezionare quale utente per un ordine particolare.
Tuttavia, presumibilmente un utente può avere molti ordini: a 1:n
relazione. Questo sarebbe il caso se userstable è la tua tabella principale, cioè stai visualizzando un user
Nel greggio e voglio vedere tutti gli ordini associati.
Questo metodo richiede una tabella intermedia, con cui collega le due tabelle esistenti e una leggera modifica alla struttura della tabella esistente. Dovresti rimuovere user_id
nel OrdersTable
. La tabella intermedia, per motivi di argomento chiamato UserOrdersTable
richiederebbe le seguenti colonne.
user_id INT
order_id INT
priority INT
È quindi possibile aggiungere la relazione usando il set_relation_n_n () metodo.
Puoi quindi invertire il set_relation_n_n()
Chiama quando viene visualizzata il file OrdersTable
Quindi puoi vedere quale utente ha fatto un ordine.
Per riassumere, a 1:n
relazione usando set_relation_n_n()
Ti consentirà di visualizzare gli ordini da parte di un utente e di un utente per un ordine.
Altri suggerimenti
Se intendi query, allora;
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