2016-04-13 1 views
0

Ich habe eine zwei Tabelle mit den Namen Benutzer und Profil. In Profil Tabelle gibt es eine Spalte mit dem Namen userID.Now i dieser Spalte userID wollen nimmt Wert von Benutzerid .Ich Tisch haben Datenbankbeziehungen getan part.But keine Daten mit view.I haben gesucht abrufen kann, aber ich habe nicht fand eine befriedigende Antwort zu meinem Problem.Wie BenutzerID aus Benutzer Tabelle abrufen?

Durch die Art, wie ich in Laravel.I bin hier haben

User-Modell bisher versucht:

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

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function userProfile(){ 
     return $this->hasOne('App\Profile'); 
    } 
} 

Profil Modell:

class Profile extends Model 
{ 
    // 
    protected $table = "profiles"; 
    public $fillable = ["firstName","lastName","middleName","DOB","gender","featuredProfile","email","phone","summary","profilePic"]; 

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

Und ich versuche, abzurufen userID mit {{$profile->userID}}. Ich weiß wirklich nicht, wo ist der pr Problem und wie geht das?

Antwort

2

Sie müssen Laravel sagen, das Beziehungsmodell wie dieses

$profile = Profile::find(1); 
$userID = $profile->user->id; 

bearbeiten zu erhalten: vom docs

Modell automatisch angenommen wird, ein user_id Fremdschlüssel haben.

in Ihrem Fall die userId ist so Ihre hasOne und belongsTo Methoden ändern den Namen foreign_key zu sagen Laravel Sie verwenden

public function profile() 
{ 
    return $this->hasOne('App\Profile', 'userId'); 
} 

public function user() 
{ 
    return $this->belongsTo('App\User', 'userId'); 
} 
+0

Es gibt mir einen Fehler "Versuch, die Eigenschaft von Nicht-Objekt zu bekommen". –

+0

'$ profile-> user-> id;' weil die db Spalte der 'user' Tabelle' id' statt 'Userid' ist – Junaid

0

Bitte fügen Sie Benutzer-ID an das ausfüllbare Array von Profilen.

Überprüfen Sie bitte den folgenden Beispielcode, um das gleiche zu tun.

public $fillable = ["firstName","lastName","middleName","DOB","gender","featuredProfile","email","phone","summary","profilePic","userID"]; 
+0

Dies ist überhaupt nicht notwendig. Es hat sogar Sicherheitsrisiken. Da er etwas anderes als user_id verwendet, muss er nur laravel mitteilen, wie der Name der ID in der Benutzertabelle lautet. – Christophvh