私はピボットテーブルと1対多の関係から値をフェッチすべきこのプロジェクトを持っています。 ReservationController雄弁な関係をvue jsコードに変換する
public function index()
{
$secSubs = Student::find(1);
return $secSubs->sectionSubjects;
}
form.blade.php
@inject('reservation', 'App\Http\Controllers\ReservationController')
@foreach($reservation->index() as $reserved)
<tr>
<td>{{ $reserved->section->section_code }}</td>
<td>{{ $reserved->subject->subject_code }}</td>
<td>{{ $reserved->subject->subject_description }}</td>
<td>{{ $reserved->schedule }}</td>
<td>{{ $reserved->subject->units }}</td>
<td>{{ $reserved->room_no }}</td>
<td>
<button class="btn btn-xs btn-danger">Delete</button>
</td>
</tr>
@endforeach
しかし私が欲しい:雄弁な構文を使用する場合は、ここで見られるように、私は正しい出力を取得しています私のページが自動的に表示されるようにvue jsの機能を利用する下記のように値がフェッチされます。
new Vue({
el: '#app-layout',
data: {
subjects: []
},
ready: function(){
this.fetchSubjects();
},
methods:{
fetchSubjects: function(){
var self = this;
this.$http({
url: 'http://localhost:8000/reservation',
method: 'GET'
}).then(function (subjects){
self.subjects = subjects.data;
console.log('success');
}, function (response){
console.log('failed');
});
},
}
});
私form.blade.phpに見られるように
<tr v-for="subject in subjects">
<td>@{{ subject.section.section_code }}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>@{{ subject.room_no }}</td>
<td>
<button class="btn btn-xs btn-danger">Delete</button>
</td>
</tr>
form.blade.php私はsection_codeの値を取得することはできません。私はここに何かを逃していますか
UPDATE: SectionSubjectモデル
class SectionSubject extends Model
{
protected $table = 'section_subject';
public function students()
{
return $this->belongsToMany(Student::class, 'section_subject_student','section_subject_id','student_id'
)->withTimestamps();
}
public function assignStudents(Student $student)
{
return $this->students()->save($student);
}
public function subject()
{
return $this->belongsTo(Subject::class);
}
public function section()
{
return $this->belongsTo(Section::class);
}
}
学生モデル
public function sectionSubjects()
{
return $this->belongsToMany(SectionSubject::class,'section_subject_student', 'student_id','section_subject_id')
->withTimestamps();
}
セクションモデル
class Section extends Model
{
public function subjects()
{
return $this->belongsToMany(Subject::class)->withPivot('id','schedule','room_no');
}
public function sectionSubjects()
{
return $this->hasMany(SectionSubject::class);
}
}
「データ」配列はどこにも表示されません。コントローラは、サブジェクトを直接返します。したがって、self.subjects = subjects.dataを置き換えることができますか。自己と一緒に$ set( '科目'、科目);代わりに?また、あなたはフロントエンドのサブジェクトの配列を期待しているようですが、コントローラ内に単一のサブジェクトを渡していますか? –
@Denis Mysenkoご返信ありがとうございます。私はself.subjects = subjects.dataを変更しました。自己と一緒に$ set( '科目'、科目);まだsubject_code値を取得していません。コントローラでは、私は、StudentとSectionSubectモデルであるSectionSubectモデルの関係を返しています。そして、私がしたことは、SectionSubjectモデルとSection Modelの関係モデルをフェッチすることです。それが私のform.blade.phpで予約された> section-> section_codeを呼び出す理由です。上記のコードを更新します。 – Jearson
配列を期待しているので、単一の項目を返すので、self.subjects.push(件名)を試すこともできます。 –