2016-05-07 7 views
0

Ich bin sehr neu in Laravel und Frameworks, so dass ich gerade dabei bin viel zu lernen.Wie man meine Modellbeziehungen implementiert und nur eins zu eins gewährleistet - Laravel

Ein Benutzer geht nach dem Anmelden auf eine Seite, auf der ein Formular angezeigt wird. Ich wünsche mir, dass dieses Formular nur angezeigt wird, wenn es zuvor nicht ausgefüllt wurde.

Meine Tabellen sind wie diese

User       Registration Q's 
--------------------------------------------------- 
user_id      reg_id 
name       q1 
email       q2 
password      q3 
           user_id 

Mein user.php Modell:

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
    public function userq() 
    { 
     return $this->hasOne('Userreq'); 
    } 

userregq.php Modell

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class userregq extends Model 
{ 
    protected $table = 'userregq'; 
    public $timestamps = false; 

    public function user() 
    { 
     return $this->belongsTo('User'); 
    } 
} 

Wenn jemand mir helfen könnte sorge dafür, dass nur einer uns Er hat einen Registrierungsfragebogen und er wird nur angezeigt, wenn er das nicht tut?

Dank

Antwort

1

Ich denke, zuerst müssen Sie Ihre Datenbank neu zu gestalten, da viele-zu-viele-Beziehung besser passt. Ein Benutzer kann mehrere Fragen beantworten und eine Frage kann für viele Nutzer aufgefordert werden, und Sie müssen auch eine Antwort speichern, so dass ich zu dieser Neugestaltung würde:

User   Answer   Question 
--------------------------------------- 
user_id  answer_id  question_id 
name   user_id  question 
email  question_id 
password  answer 

Und dann Eloquent Modelle schreiben.

Wenn sich ein Benutzer anmeldet, rufen Sie Datensätze aus der Antworttabelle mit der angemeldeten Benutzer-ID ab, und wenn keine vorhanden sind, zeigen Sie ihm den Fragebogen an.

Da Sie Laravel neu sind, könnten Sie diese großen Video-Tutorials von Jeffrey Way unter Laracasts Laravel 5 Fundamentals überprüfen.