[laravel]多対多のリレーション(中間テーブル)ができない
解決したいこと
初心者です。
php laravelにて、日記アプリを作成中です。
投稿の際に複数タグをつけられるようにするため、中間テーブルを作成して多対多の
紐付けを行なってデータを呼び出したいです。
diaryとlessonは互いに複数データを持てます
発生している問題・エラー
中間テーブルにデータがない(カラムがない?)
https://gyazo.com/a450f1f205fdc767471a97b0fc30ce99
該当するソースコード
class DiaryController extends Controller
{
public function add(){
$songs = Song::all();
$lessons = Diary::with('lessons')->get();
return view('admin.diary.create',['songs'=>$songs,'lessons'=>$lessons]);
}
}
中間テーブル(diary_lesson)
public function up()
{
Schema::create('diary_lesson', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedInteger('diary_id');
$table->unsignedInteger('lesson_id');
$table->primary(['diary_id', 'lesson_id']);
$table->timestamps;
//外部キー制約
$table->foreign('diary_id')
->references('id')
->on('diaries')
->onDelete('cascade');
$table->foreign('lesson_id')
->references('id')
->on('lessons')
->onDelete('cascade');
});
■Diaryモデル
class Diary extends Model
{
protected $guarded = array('id');
public static $rules = array(
'date' => 'required',
'song_id' => 'required',
'lesson_id' => 'required',
'impression' => 'required'
);
//多対多リレーション定義
public function lessons(){
return $this->belongsToMany('App\Lesson');
}
}
■Lessonモデル
class Lesson extends Model
{
protected $guarded = array('id');
public static $rules = array(
'unit' => 'required',
);
//多対多リレーション定義
public function diaries(){
return $this->belongsToMany('App\Diary');
}
}
0