2016-04-15 2 views
0

Ich habe drei ModellLaravel 5.2 Wie durch Laravel eloquent Modell drei Tische setzen

1. user 
2. course 
3. fee 

wo Benutzermodell mit Kurstabelle mit einer zu vieler Beziehung und Kursmodell verbunden ist, mit der Gebührentabelle verbunden mit 0.59 Beziehung.

Das Problem ist, ich muss die Summe aller Gebühren finden, wo der Benutzer den Kurs auswählte, und dort sollten die abgeschlossenen Stauten des Benutzers sein 1. Wie schreibe ich die Abfrage dafür?

Course Modell:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Course extends Model 
{ 
    protected $table='courses'; 
    protected $fillable = ['name','date','publication_status']; 


    public function fee(){ 
     return $this->hasOne('App\Fee','course_id', 'id'); 
    } 
     public function user() 
    { 
     return $this->belongsToMany('App\User','course_id','id'); 
    } 
} 

Benutzermodell:

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    protected $table='users'; 
    protected $fillable=['name','email','phone','course_id']; 



      public function courses() 
    { 
     return $this->hasMany('App\Course','id','course_id'); 
    } 
} 

Gebühr Modell:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Fee extends Model 
{ 
     protected $table='fees'; 
    protected $fillable = ['fee','course_id']; 

    public function course() 
    { 
     return $this->belongsTo('App\Course', 'course_id', 'id'); 
    } 
} 

, wenn jemand die Lösungen kennen, wenden Sie sich bitte ein liefern.

Antwort

0

Ich denke, man den Benutzer zum ersten Mal finden:

if(User::find($id)->complete_status == 1){ 
    $user = User::find($id); 
} 

Danach werden Sie alle Kurse dieses Benutzers zurück:

$courses = $user->courses; 

Und schließlich finden Sie eine foreach-Anweisung implementieren jeweils zurückzukehren Kurse Gebühr:

foreach($courses as $course){ 
    $feeSum += $course->fee->value; 
} 

Ein Beispiel Ihre Gebührensumme Ansicht weitergeben müssen:

return view('view_path' , compact('feeSum')); 

Anfügen, dass $ feeSum ist in der gleichen Funktion, die Anweisung zurückgeben.

Nach der Rückkehr wird die Variable, in der Ansichtsdatei werden Sie dies zum Beispiel hinzufügen:

<label>{{ $feeSum }}</label> 
+0

Aber ich möchte auf die Seite mit den Umsatzdetails umgeleitet werden. Wie kann ich auf $ ID zugreifen? – User57

+0

Sie müssen das Array der Gebühr an Ihre Ansicht senden, und in der Ansichtsdatei können Sie Folgendes versuchen: @foreach ($ array_name als $ row) @endforeach –

0

Sie könnten in mit Pivot-ähnlichen Beziehungen zu suchen.

Ihr User-Modell wie etwas haben könnte:

# Get the fees for a user: 
public function fees() 
{ 
    return $this->hasMany('App\Fees', 'fees', 'courses', 'course_id', 'course_id') 
       ->withPivot('iterate', 'fields', 'here', 'to', 'pass', 'on') 
       ->withTimestamps(); 
} 

Der Code oben nicht getestet worden, aber ich bin mir ziemlich sicher, dass die hasMany/belongsToMany Methoden zur Verknüpfung mehrerer ermöglichen Tabellen in einer Beziehung.