2017-01-27 2 views
1

Ich habe zwei Arten von Benutzern: Personal und Business. Der persönliche Benutzer kann dem Business-Benutzer angehören. Das ist, was ich pivot-Tabelle personal_users_business_user erstellt habe, die user_id, business_user_id haben.Wie erstelle ich richtige Beziehungen?

Ich habe User, PersonalUser und BusinessUser Modell. In User-Modell ich habe diese Beziehung:

public function company() 
    { 
      return $this->belongsToMany('App\Models\PersonalUser','personal_users_business_users', 'user_id', 'business_user_id'); 
    } 

Im mit attach() Methode:

$user->company()->attach($business_user_id); 

Es speichert Daten in Pivot-Tabelle. Nun ist das, was ich in Sicht möchte etwas wie folgt aus:

<input class="typeahead form-control" type="text" name="user_company" @if($user->company->approved == 0) ? disabled : '' @endif value="{{$user->company->company_name}}"> 

Aber ich nicht, wie wie in Pivot-Tabelle auf den Feldern von Benutzer zugreifen. Irgendein Vorschlag?

+0

Persönlicher Benutzer kann zu mehreren Geschäftsbenutzern gehören oder nur einer? – zgabievi

+0

nur eine ... und Business-Benutzer kann mehrere persönliche Benutzer haben – None

Antwort

1

Wenn Sie benötigen, dass Business-Benutzer mehrere persönliche Benutzer haben, sollten Sie hasMany, belongsTo Beziehung verwenden. In Ihrem BusinessUser Modell sollten Sie Methode erstellen:

public function personalUsers() { 
    return $this->hasMany(PersonalUser::class); 
} 

Und in Ihrem PersonalUser Modell Sie diese Methode definieren sollen:

public function businessUser() { 
    return $this->belongsTo(BusinessUser::class); 
} 

in der Migration, für die persönliche Benutzer-Tabelle hinzufügen folgendes Feld:

$table->integer('business_user_id')->unsigned()->nullable(); 

Das wird Ihren Code richtig machen. Sie benötigen keine Pivot-Tabelle für diese Beziehung.

+0

Wenn ich keine Pivot-Tabelle habe, wie werde ich genehmigt und abgelehnt? und wie werde ich eine Liste von persönlichen Benutzern haben, die zu Geschäftsbenutzer gehören? – None

+0

Ich habe bereits business_user_id in der persönlichen Benutzer-Tabelle, aber ich werde es setzen, wenn Business-Benutzer diesen Benutzer freigeben – None

+0

Sie können genehmigte Spalte direkt in persönlichen Benutzer Tabelle festlegen. Sie können diese Liste einfach aufrufen, indem Sie 'BusinessUser-> findOrFail (1) -> personalUsers 'aufrufen. Dies gibt Ihnen alle persönlichen Benutzer im Zusammenhang mit Business-Benutzer mit ID 1 – zgabievi

0

Set Beziehung wie dieser

public function company() 
{ 
    return $this->belongsToMany('App\Models\PersonalUser','personal_users_business_users', 'user_id', 'business_user_id') 
      ->withPivot(['your_pivot_column']); 
} 

Und jetzt, wenn Sie Code

$user = User::with(['company'])->get(); 

$user die company Beziehung mit der beabsichtigten pivot Spalte haben.