2016-02-19 40 views
1

我試圖將數據傳遞給我的看法,我想以可視化的一些記錄,名字不是ID所以在我的控制器我有這樣的:顯示不是id,而是顯示與外鍵連接的表中某個數據的名稱。 - Laravel 5.2

`public function getIndex() { 

     return view('admin.rules.list', [ 
      'rules' => ClassSubject::get(), 
      'classes'=> Clas::lists('name', 'id'), 
      'subjects' => Subject::lists('name', 'id'), 
      'teachers'=>User::where('type','=','teacher')->get()->lists('full_name','id') 
     ]); 


    } 

    public function postIndex(Request $request) { 
     $rule = ClassSubject::create([ 
      'class_id'=> $request->get('class_id'), 
      'subject_id'=> $request->get('subject_id'), 
      'teacher_id'=> $request->get('teacher_id'), 
     ]); 

     if($rule->id) { 
      return redirect()->back()->with('message', [ 
       'type'=> 'success', 
       'message' => 'Успешно записан нов клас!' 

      ]); 
     } 

     return redirect()->back()->with('message', [ 
      'type'=> 'danger', 
      'message' => 'Класът не е записан!' 
     ]); 
    }` 

我通過它在我鑑於這樣的(表的一部分):

`@foreach($rules as $rule) 
        <tr> 
         <td>{{ $rule->user->full_name }}</td> 
         <td>{{ $rule->subject->name}}</td> 
         <td>{{ $rule->clas->name}}</td> 
         <td>{{ $rule->created_at->format('d.m.Y, H:i') }}</td> 
         <td>{{ $rule->updated_at->format('d.m.Y, H:i') }}</td> 
         <td> 
          <a href="{{ url('admin/rule/edit/'.$rule->id) }}" class="btn btn-sm btn-success">Редактирай</a> 
          <a href="{{ url('admin/rule/delete/'.$rule->id) }}" class="btn btn-sm btn-danger">Изтрий</a> 
         </td> 
        </tr> 
       @endforeach` 

所以這事,我看到的問題,而不是ID的名稱<td>{{ $rule->subject->name}}</td>作品完美,但與其他兩個:<td>{{ $rule->user->full_name }}</td><td>{{ $rule->clas->name}}</td>

我有是錯誤消息:

提供的foreach 無效的參數()(查看:C:\ XAMPP \ htdocs中\ school_system \資源\意見\ ADMIN \規則\ list.blade.php)

我發佈表(型號)的連接,因爲我認爲可能有共同smthg:

用戶等級:

`public function setPasswordAttribute($password) 
    { 
     $this->attributes['password'] = bcrypt($password); 
    } 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = ['password', 'remember_token']; 

    public function classes() { 
     return $this->belongsTo(Clas::class); 
    } 

    public function subjects() { 
     return $this->hasMany(Subject::class); 
    } 

    public function classSubject() { 
     return $this->hasMany(ClassSubject::class); 
    } 

    public function studentMark() { 
     return $this->hasMany(StudentMark::class); 
    } 

    public function getFullNameAttribute() 
    { 
     return $this->first_name . ' ' . $this->last_name; 
    } 

}` 

柯樂類:

`protected $fillable = [ 
     'name', 
     'profile_id' 

    ]; 

    protected $table = 'classes'; 

    public function profile() { 
     return $this->belongsTo(Profile::class); 
    } 

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

    public function classSubject() { 
     return $this->hasMany(ClassSubject::class); 
    } 

    public function student() { 
     return $this->hasMany(Student::class); 
    } 

    public function studentMark() { 
     return $this->hasMany(StudentMark::class); 
    }` 

主題類:

`protected $fillable = [ 
      'name' 
    ]; 

    public function classSubject() { 
     return $this->hasMany(ClassSubject::class); 
    } 

    public function studentMark() { 
     return $this->hasMany(StudentMark::class); 
    } 

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

    public function teacher() { 
     return $this->hasMany(Teacher::class); 
    }` 

這連接它們的表:

`class ClassSubject extends Model 
    { 
     protected $fillable = [ 
      'class_id', 
      'subject_id', 
      'teacher_id', 
      'method_of_study_id', 

     ]; 

     public function subject() 
     { 
      return $this->belongsTo(Subject::class); 
     } 

     public function classes() 
     { 
      return $this->belongsTo(Clas::class); 
     } 

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


    }` 

我會真的心存感激,如果有人可以幫助,我試圖解決這一問題的天..: )

回答

0

我看到的第一個問題是:

$rule->clas->name 

ClassSubject上沒有clas方法。它應該是:

$rule->classes->name 

,或者你可以重命名的方法,因爲它不是傳統的有複數名稱爲「屬於關聯」關係法

+0

是的,但即使有'$基於規則>類 - > name'不起作用,仍然是相同的錯誤 –

+0

你得到'ClassSubject :: get()'的結果是多少?如果只有一個雄辯會返回一個模型而不是一個集合。該模型不會被迭代,如果作爲foreach循環的參數給出,會拋出一個錯誤 – jclyons52

+0

不,它不僅是一個。問題出在這兩個:'​​{{$ rule-> user-> full_name}}'; '​​{{$基於規則> clas->名稱}}'因爲如果我打電話給他們這樣的:'​​{{$基於規則> teacher_id}}'和'​​{{$基於規則>類標識碼}} '我的網頁顯示,但我只看到ID ... –