Ich hoffe, dies wird Ihnen helfen.
Wenn ich verstehe, was Sie geschrieben haben, ich glaube, Sie nur eine Eigenschaft zu Ihrem Benutzer Entity hinzufügen müssen. Eine User-Entity kann ein Football-Spieler oder ein Runner etc. sein. Fügen Sie einfach eine sportType-Eigenschaft zu Ihrer User-Entity hinzu.
Wenn ein Benutzer Multiples sportType haben dann vielleicht könnten Sie drei Tabellen in Ihrer Datenbank verwenden: 1 Tabelle namens Benutzer 1 Tabelle namens Sport 1 Tabelle namens user_sports
Tabelle Benutzer
ID Name email ...
1 Name1 [email protected] ...
2 Name2 [email protected] ...
3 Name3 [email protected] ...
Tabelle Sport
ID Name
1 football
2 basketball
3 running
Tabelle user_sport
ID user_id sport_id
1 1 3
2 8 1
3 1 2
.. .. ..
Da ein Benutzer viele Sportarten haben kann, dann ist es eine "eins zu viele" Beziehung. Sie können auf der Doctrine documentation sehen, wie Sie diese Art von Beziehung auf Ihre Entitäten einstellen.
Update: Wenn ich verstehe, dass Ihr Administrator Felder zu einer Sport-Entität hinzufügen wird und Sie nicht wissen, wie viele Felder eine Sport-Entität haben wird.
Sie können die Daten Transformers-Komponente verwenden. Schauen Sie sich hier an:
Wenn Sie das Formular erstellen, damit Ihr Administrator eine neue Sport-Entität hinzufügen kann, können Sie ihm einen TextAreaType geben. Der Admin fügt diesem TextAreaField manuell einen gültigen JSON hinzu
Wenn der Admin das Formular an Ihren Controller sendet, wird es Ihren TextAreaType entsprechend Ihrer Definition in SportType transformieren.
Exemple:
// src/AppBundle/Form/SportType.php
namespace AppBundle\Form\Type;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
// ...
class SportType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('sportJsonFields', TextAreaType::class); //here you give the texterea to your admin so he inserts a json manually
$builder->get('sportJsonFields')
->addModelTransformer(new CallbackTransformer(
function ($SportJsonFieldsJson) {
// transform the json datas to a string
return json_decode($tagsAsArray);
},
function ($tagsAsString) {
// transform the string back to a valid json
return json_encode($SportJsonFieldsTextArea);
}
))
;
}
}
Sorry, aber ich verstehe Sie nicht. Warum tritt ein Benutzer mehreren Sportlern bei? Ist er ein Trainer/Teamleiter? Und was du damit beabsichtigst zu sagen "mach mit". Ich sehe, dass Englisch nicht deine erste Sprache ist, aber du musst das näher ausführen, wenn du eine Antwort willst. –
Benutzertabelle enthält commons Felder für alle Sport-Typen, jede Sportart Besonderheiten Felder hat, so muß ich Benutzereinheit erstellen, die andere Einheit verbindet, aber mein Problem, wie ich tun kann, dass der Administrator eine neue Einheit für eine neue Sportart hinzufügen mit spezifischen Feldern? – kaneda
So sind sie Sportarten. Und die Beziehung soll "Benutzerpraxissport" bedeuten? –