Besoin d'aide ?

Besoin d'aide pour configurer des relations entre modèles

  • Avatar de t0m
    Membre depuis :
    06/12/2018
    Messages :
    1

    je débute avec Laravel (j'ai plus d'Xp avec symfony), et j'aurais besoin d'aide concernant le choix des relations entre modèles.

    Mon projet est un générateur de quizz sous Laravel 5.2 (car le server tourne avec php 5.5, donc pas le choix)

    j'ai donc ces tables:

    • quizzs
    • questions
    • answsers
    • questions_types
    • fields_types
    • languages
    • users
    • themes
    • countries
    • cities
    • postal_codes

    Voici le shéma logique
    https://tof.cx/image/C8Y8f

    quizzs
    un quizz possède 1 ou plusieurs questions, et une question peut appartenir à plusieurs quizz
    => relation many to many
    un quizz peut utiliser un et un seul theme, un thème peut etre utilsé par plusieurs quizzs
    => relation many to one
    un utilisateur peut jouer à plusieurs quizzs et un quizz peut être joué par plusieurs utilisateurs
    => relation many to many

    questions
    une question possède 1 ou plusieurs réponses et une réponse appartient forcément à une question
    => relation one to many
    une question possède 1 et un seul type de champ (field_type) (choix unique, text, etc) et un type de champ est relié à plusieurs questions.
    => relation many to one
    une question est de 1 seul type (questions_types) et une question type peut-etre relié à plusieurs questions
    => relation many to one
    une question peut être traduite dans plusieurs langues, et une langue peut etre utilisée pour plusieurs questions
    => relation many to one

    users
    un utilisateur habite dans un et un seul pays et une et une seule ville

    cities
    une ville appartient à un et un seul pays, mais un pays possède plusieurs villes

    postals_codes
    une ville possède un et un seul code postal

    Relations dans les fichiers modèles:

    dans mon modèle Quizzs:

    public function question()
    {
    return $this->hasMany(Question::class);
    }

    dans mon modèle Questions:

    public function answer()
    {
    return $this->hasMany(Answer::class);

    }

    public function quizz()
    {
    return $this->belongsTo(Quizz::class);

    }

    public function field_type()
    {
    return $this->hasOne(FieldType::class, 'field_type_id');

    }
    public function question_type()
    {
    return $this->hasOne(QuestionType::class, 'question_type_id');

    }
    public function language()
    {
    return $this->hasOne(Language::class);

    }

    dans mon modèle Answer:

    public function question()
    {
    return $this->belongsTo(Question::class);
    }

    dans mon modèle FieldType

    public function question()
    {
    return $this->hasMany(Question::class, 'field_type_id');

    }

    dans mon modèle QuestionType

    public function question()
    {
    return $this->hasMany(Question::class, 'question_type_id');

    }

    dans mon modèle Language

    public function question()
    {
    return $this->hasMany(Question::class, 'language_id');

    }

    Est -ce que ces relations sont correctes ?

    Quels sont les conventions concerant les noms de fichiers/classes avec plusieurs mots:
    typiquement FieldType, ca marche mais j'ai modifié le répertoire des vues pour "field"
    puis je renommer en field_type ?

    Merci d'avance pour vos réponses

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2299

    J'ai pas tout épluché mais déjà :

    Dans le modèle Quizz :

    public function questions()
    {
    return $this->belongsToMany(Questions::class, 'quizzs_has_questions', 'quizzs_id', 'questions_id');
    }

    Dans le modèle Question :


    public function quizzs()
    {
    return $this->belongsToMany(Quizz::class, 'quizzs_has_questions', 'questions_id', 'quizzs_id');
    }

Vous ne pouvez pas répondre à ce sujet.