Laravel5.5 homesteadを使用し、学校の予約システムを構築しております。
画像は生徒側から見た「いつの時間にどの先生の授業が受けられるか」を示しております
実現したいこと
現在先生のidを表示している部分を、先生の名前に変更(サーバ側で情報を受け取りjsでjson_encodeし、vue.jsとして表示)
問題点
reservation_calendersテーブルで授業可能な先生の情報を取る
→関連テーブルteachersのnameカラムから先生の名前を取りたいが。。
//reservation_calendersテーブルのteacher_idカラムに外部キー設定(teachersテーブルと紐づける) mysql> show create table reservation_calenders; reservation_calenders | CREATE TABLE `reservation_calenders` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time_id` int(10) unsigned NOT NULL, `teacher_id` int(10) unsigned NOT NULL, `user_id` int(10) unsigned DEFAULT NULL, `date` date DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `reservation_calender_teacher_id_foreign` (`teacher_id`), KEY `reservation_calender_user_id_foreign` (`user_id`), CONSTRAINT `reservation_calender_teacher_id_foreign` FOREIGN KEY (`teacher_id`) REFERENCES `teachers` (`id`) ON DELETE CASCADE, CONSTRAINT `reservation_calender_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=363 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
//Reservation_calenderモデル class Reservation_calender extends Model { protected $fillable = [ 'time_id', 'teacher_id', 'date', ]; public function teachers() { return $this->belongsTo('App\Teacher'); } public function master_reservation_times() { return $this->belongsTo('App\Master_reservation_time'); } }
//サーバ側 //このようにreservation_calendersテーブルで授業可能な先生の情報を取っている $available_teachers = Reservation_calender::where('date','=' ,$date) ->where('user_id', '=', Null) ->with('teachers')//withメソッドは必要ないと思われるが。。 ->get();
//js側 var available_teachers = @json($available_teachers);
//html側 {{available_teacher.teacher_id}}//こうするとteacher_idは表示される {{available_teacher.teachers.name}}//これは表示されない
サーバ側で関連テーブル(ここではteachersテーブル)の情報も合わせてjs側に渡してjson_encodeしたいのですが、よくわかりません。
また表示側はlaravelを使って{{$available_teachers -> teachers -> name}}
としてもProperty [teachers] does not exist on this collection instance.
のエラーが出ます
(後々の処理でlaravelよりvue.jsで表示したほうが楽なのでlaravelでの表示は今回はなしで考えております、お願いいたします。)
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/24 02:06