vuejs vue update tutorial pwa cli laravel laravel-5 laravel-5.1 vue.js vue-resource

update - pwa laravel vue



Convierta una relación elocuente en el código vue js (1)

no es problema de laravel o vuejs.

este código

this.$http({ url: ''http://localhost:8000/reservation'', method: ''GET'' }).then(function (subjects){ self.subjects = subjects.data; console.log(''success''); }, function (response){ console.log(''failed''); });

puedes ver que esta solicitud de ajax recibirá respuesta en json.

y json es más o menos contenido estático. como "Eloquente" dentro del alcance de php es un objeto así que si le pides datos relacionales, ejecutará la llamada y devolverá sus datos relacionales pero json no puede hacer eso.

así que para hacerlo funcionar, necesitas convertir datos relacionales completos y crear una matriz masiva que contenga todos los datos relacionales y luego codificarlos.

por ejemplo :

$user = App/User::with(''roles'')->first(); return $user->toJson();

ahora si devuelve esto, contendrá "user.roles.name" este valor, ya que lo cargamos ansiosamente y lo convertimos en json.

en tu caso:

$subjects = App/Reservation::with(''section'')->all(); return $subjects->toJson();

ahora puede usar temas y recorrerlo en "subject.section.section_code" ya que la sección se carga con entusiasmo y se agrega a la matriz y se convierte en json.

Espero que esto resuelva tu problema.

Tengo este proyecto que debe obtener valores de una tabla dinámica y una relación de muchos. Cuando uso la sintaxis elocuente obtengo el resultado correcto como se ve aquí:

ReservationController

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

Sin embargo, quiero hacer uso de la función de vue js para que mi página se rellene automáticamente con el valor que se obtiene como se ve a continuación.

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>

Como se ve en mi form.blade.php, no puedo obtener el valor de section_code. ¿Me estoy perdiendo de algo?

ACTUALIZACIÓN: SectionSubject Model

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

Modelo de estudiante

public function sectionSubjects() { return $this->belongsToMany(SectionSubject::class,''section_subject_student'', ''student_id'',''section_subject_id'') ->withTimestamps(); }

Modelo de sección

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