2016-04-15 5 views
0

У меня есть три модельLaravel 5.2 Как присоединиться три таблицы по Laravel красноречивой модели

1. user 
2. course 
3. fee 

где пользовательская модель связана с курсовой таблицей с одного до многих отношений, и, конечно, модели связана с таблицей сборов с 12:59 отношения.

проблема заключается в том, что я должен найти сумму всех сборов, в которых пользователь выбрал курс, и там, где были завершены статисты, должно быть 1. как написать запрос для него?

Модель курса:

<?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'); 
    } 
} 

Модель пользователя:

<?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'); 
    } 
} 

плата Модель:

<?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'); 
    } 
} 

если кто-нибудь знает решения, пожалуйста, предоставьте один.

ответ

0

Я думаю, вы можете найти пользователь первый:

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

После этого вы будете вернуть все курсы этого пользователя:

$courses = $user->courses; 

И, наконец, вы будете осуществлять Еогеасп заявление, чтобы вернуться каждый курсы плата:

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

пример из передать свой гонорар сумму для просмотра:

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

Допустим, что $ feeSum находится в той же функции, что и инструкция return view.

после возвращения переменной в файле вида вы будете добавлять это, например:

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

Но я хочу перенаправить на страницу revengedetails. Как мне получить доступ к $ id? – User57

+0

Вы должны отправить массив платежей в свое представление, и в файле вида вы можете попробовать следующее: @foreach ($ array_name как $ row) @endforeach –

0

Вы можете посмотреть в использовании шарнирные типа отношений.

Ваш пользователя модель может иметь что-то вроде:

# 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(); 
} 

Код выше не был протестирован на всех, но я уверен, что hasMany/belongsToMany методы позволяют для соединения нескольких таблицы в отношениях.

Смежные вопросы