2017-11-07 20 views
1

Hallo alle können Sie mir helfen?Convert Abfrage von Abfrage-Generator t zu Eloquent Abfrage

Ich habe Abfrage wie folgt:

public function getByUser($userId,$activityId){ 
     return $journals = DB::table('personfamilies') 
      ->join('journals','personfamilies.id','=','journals.person_id') 
      ->join('journal_details','journals.id','=','journal_details.journal_id') 
      ->where([ 
       ['user_id','=',$userId], 
       ['activities_id','=',$activityId] 
      ]) 
      ->get(); 
    } 

, wie zu beredt zu konvertieren?

Modell PersonFamily.php

public function relationship(){ 
    return $this->hasOne(Relationship::class,'id','relationship_id'); 
} 

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

public function journal(){ 
    return $this->hasMany(Journal::class,'id','id'); 
} 

Modell Journal.php

public function jurnalDetails(){ 
      return $this->hasMany(JurnalDetail::class,'id'); 
     } 

     public function personfamily(){ 
      return $this->belongsTo(PersonFamily::class,'person_id','journal_id'); 
     } 

JournalDetail.php

public function journal(){ 
     return $this->belongsTo(Journal::class,'id'); 
    } 

Ich habe es so versucht, aber es funktioniert nicht richtig `` `

return $journal = PersonFamily::where([ 
      ['user_id','=',$userId] 
      ]) 
      ->with('journal','journal.jurnalDetails') 
      ->get(); 
``` 

Antwort

0

Ich würde so etwas tun:

// A family has many family members 
public function familyMember() { 
    return $this->hasMany('App\FamilyMember'); 
} 

Family Modell:

Sie Familie, Family, Journal und JournalEntry Modelle

Familie Modell Unter der Annahme haben

// A family member belongs to exactly one family 
public function family() { 
    return $this->belongsTo('App\Family') 
} 

// A family member has exactly one journal 
public function journal() { 
    return $this->hasOne('App\Journal'); 
} 

Journal Modell:

// A journal belongs to exactly one family member 
public function familyMember() { 
    return $this->belongsTo('App\FamilyMember'); 
} 

// A journal has many journal entries 
public function journalEntries() { 
    return $this->hasMany('App\JournalEntry'); 
} 

JournalEntry Modell:

// A journal entry belongs to exactly one journal 
public function journal() { 
    return $this->belongsTo('App\Journal'); 
} 

dann Ihre Abfrage wird ziemlich einfach:

// If you need the whole Family 
$family = Family::find($familyId); 
// If you need all the family members that belong to a family 
$familyMembers = $family->familyMembers; 
// If you are looking for a particular family member 
$familyMember = FamilyMember::find($userId); 
// If you need the journal for a family member 
$journal = $familyMember->journal 
// If you need all the journal entries in a particular journal 
$journalEntries = $journal->journalEntries; 

Sie dann diese Variablen in Ihrer Sicht passieren kann und sie angezeigt werden je nach Bedarf.

See the documentation um mehr benutzerdefinierte Beziehungen für den Fall, dass Ihre Fremdschlüssel anders sind.