2016-10-11 2 views
0

So habe ich 3 Tabellen: Benutzer, Kunden und Buchungen.Speichern des fremden Schlüssels des eingeloggten Benutzers als Fremdschlüssel

Die Beziehung und Fremdschlüssel zwischen den einzelnen:

Benutzer hasOne Kunden. Kunden gehört zu Benutzern. Users.id = Kunden.user_id

Kunden hat viele Buchungen. Buchungen gehören zu Kunden. Customers.id = Bookings.customer_id

In einem Add-Formular möchte ich bei der Buchung die Kundennummer des eingeloggten Benutzers als customer_id der Buchung speichern.

Felder:

In Tabelle Benutzer:

-id
-username
-password
-role_id (connected to roles table) -created
-modified

In Tabelle Customers:

-id
-user_id (the foreign key connected to Users table)
-name
-created
-modified

In Buchungen Tabelle:

-id
-customer_id (the foreign key connected to Customers table)
-payment_id (connected to payments table)
-created
-modified

+0

ist nicht Benutzer == Kunde? Was hast du probiert? Hast du Konventionen eingehalten? –

+0

Benutzer und Kunde sind aus Sicherheitsgründen getrennt - Benutzer hat Benutzername und Passwort, Kunde hat Name und Telefonnummer. Ich habe versucht: $ customer = $ booking-> Customers-> findByuser_id ('Auth.User') -> first(); – mistaq

+0

was ist sicher daran? –

Antwort

1

Sie unter c versuchen können, Ode

$booking = $this->Booking->newEntity(); 
if ($this->request->is('post')) { 
    $data = $this->request->data; #Store post data to a variable 
    $customer_id = #Find and assign customer ID to a variable 
    $data['customer_id'] = $customer_id; #Assign customer ID to saving data 
    $booking = $this->Bookings->patchEntity($booking, $data); 
    if ($this->Bookings->save($booking)) { 
     #SAVING SUCCESS 
    } else { 
     #ERROR SAVING 
    } 
} 

Suche nach Kunden-ID (Loading Modell)

$this->loadModel('Customers'); 
$logged_in_user_id = $this->Auth->user('id'); 
$customer = $this->Customers->find('all')->where(['user_id'=>$logged_in_user_id])->first(); 
$customer_id = $customer->id; #Or $customer['id']; 

Suche nach Kunden-ID (ohne Laden Modell)

$logged_in_user_id = $this->Auth->user('id'); 
$customer = $this->Bookings->Customers->find('all')->where(['user_id'=>$logged_in_user_id])->first(); 
$customer_id = $customer->id; #Or $customer['id']; 
+0

Also mit dieser Zeile: $ customer_id =, wo finde ich die Kundennummer? Wenn Sie beispielsweise im Debug-Modus auf Sitzung und dann auf Auth klicken, werden die aktuell angemeldeten Benutzerdetails angezeigt, nicht jedoch die Details des Kunden. – mistaq

+0

Geben Sie mir Ihre Kunden Tabelle 'Felder' Name @ W.Lau –

+0

Immer noch einen Datenbankfehler. Wie auch immer, ich werde mein OP mit den Feldern aktualisieren. – mistaq

0

Schauen Sie sich die Footprint plugin, die genau Griffe dieses Problem ziemlich transparent.

Verwandte Themen