2016-02-19 39 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 ... –