2017-02-05 2 views
0

Ich habe eine Entität namens Bücher und andere Benutzer. Jedes Buch kann viele Autoren (Benutzer) haben. Also, wenn ich ein Buch hinzufügen, wähle ich die Benutzer, die auf der Website registriert sind. Aber wenn der Autor des Buches kein Konto auf der Website hat, möchte ich seinen Namen von Hand eingeben.Lehre Orm eins zu vielen mit Referenzschlüssel auch mit Strings

+----+---------+-----------+--+ 
| id | book_id | author_id | | 
+----+---------+-----------+--+ 
| 1 |  1 | 1   | | 
| 2 |  1 | Mr.Paul | | 
+----+---------+-----------+--+ 

Sehen Sie, wie die author_id eine Zeichenfolge ist, sondern auch ein Referenzschlüssel für einen Benutzer? Kann ich das mit der Doktrin machen oder muss ich die Beilagen selbst verwalten?

Edit: Ich habe keine Ahnung, was der richtige Titel sein sollte Edit2: Eine mögliche Lösung wird sein, eine andere Tabelle zu machen, die nur Autoren enthält, die kein Konto auf der Website haben.

+0

In meiner Option ist das keine gute Lösung, ich denke, es ist besser, wenn Sie nicht nur einen Namen eingeben, sollten Sie einen neuen Autor erstellen und dann diese neue Autor_ID in die Datenbanktabelle einfügen. Ich bin kein Doktrin Pro, aber ich denke, das ist nicht möglich, weil es wirklich schlechte Praxis –

+0

Oder vielleicht erstellen Sie eine andere Tabelle, die nur Autoren, die kein Konto auf der Website haben? –

+0

Wie sieht Ihre aktuelle Autorentabelle aus? Ich denke, Sie sollten diese Tabellen 'autors_books',' books', 'authors'' ~ accounts' haben, so kann ein Autor ein Konto haben oder nicht –

Antwort

2

würde ich folgende Vorgehensweise empfehlen

Sie haben eine Tabelle books eine Tabelle accounts und die folgende:

authors_books

+----+---------+-----------+--+ 
| id | book_id | author_id | | 
+----+---------+-----------+--+ 
| 1 |  1 | 1   | | 
| 2 |  1 | 2   | | 
+----+---------+-----------+--+ 

Autoren

+----+---------+------------+--+ 
| id | name  | account_id | | 
+----+---------+------------+--+ 
| 1 | Mr. Paul | 1   | | 
| 2 | Simon | (empty) | | 
+----+---------+-------------+--+ 

die account_id kann leer sein

Verwandte Themen