Festlegen von Beziehungen Grocery CRUD
-
27-10-2019 - |
Frage
Ich habe 2 Tische
Users Table => id , username
OrdersTable => order_id,user_id, qty,total
Ich muss diese beiden Tabellen mit verknüpfen.
id und user_id.
Wie kann ich das mit Lebensmittel-CRUD machen?
Lösung
Wenn Sie verwenden OrdersTable
Als primäre Tabelle können Sie a verwenden 1:1
Beziehung nutzen set_relation().Dies wäre der Fall, wenn Sie eine Bestellung ansehen und sehen/einstellen möchten, zu welchem Benutzer die Bestellung gehört.
$crud->set_table('OrdersTable');
$crud->set_relation('id','UsersTable','username');
Dadurch können Sie den Benutzer für eine bestimmte Bestellung auswählen.
Vermutlich kann ein Benutzer jedoch viele Bestellungen haben – a 1:n
Beziehung.Dies wäre der Fall, wenn UsersTable Ihre primäre Tabelle ist, d. h.Du siehst ein user
im CRUD und möchten alle zugehörigen Aufträge sehen.
Diese Methode erfordert eine Zwischentabelle, mit der Sie die beiden vorhandenen Tabellen verknüpfen, sowie eine geringfügige Änderung Ihrer vorhandenen Tabellenstruktur.Sie müssten entfernen user_id
im OrdersTable
.Die Zwischentabelle wird der Argumentation halber genannt UserOrdersTable
würde die folgenden Spalten erfordern.
user_id INT
order_id INT
priority INT
Anschließend können Sie die Beziehung mithilfe von hinzufügen set_relation_n_n() Methode.
Sie können das dann umkehren set_relation_n_n()
Rufen Sie an, wenn Sie sich das ansehen OrdersTable
So können Sie sehen, welcher Benutzer eine Bestellung aufgegeben hat.
Zusammenfassend lässt sich sagen, a 1:n
Beziehung nutzen set_relation_n_n()
ermöglicht es Ihnen, Bestellungen eines Benutzers und eines Benutzers für eine Bestellung anzuzeigen.
Andere Tipps
Wenn Sie eine Abfrage meinen, dann;
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