Laravel:如何使用附加方法在三向枢轴 table 的情况下插入数据
Laravel: How to insert data in case of three way pivot table using attach method
这是我的 tables
板
id
board_name
类
id
class_name
科目
id
subject_name
board_classes
id
board_id
class_id
board_class_subjects
id
board_id
class_id
subject_id
我在我的模型中写了以下关联
Board.php
public function classes()
{
return $this->belongsToMany('Clas','board_classes','board_id','class_id');
}
Clas.php
public function subjects()
{
return $this->belongsToMany('Subject','board_class_subjects','class_id', 'subject_id');
}
我正在尝试使用以下代码在数据透视表 table board_class_subjects
中插入示例数据:
$data = array();
$data['board_id'] = 1;
$data['class_id'] = 1;
$data['subject_id'] = 1;
$pivot = Board::find(1);
$pivot->subjects()->attach($data);
但出现如下错误:
Call to undefined method Illuminate\Database\Query\Builder::subjects()
我知道在我的 Board 模型中没有名称为 subjects 的方法,但不确定如何实现它,所以我可以使用 attach
方法在 board_class_subjects
数据透视表 table 中插入数据。我应该在 Board 模型中添加另一个名为 sections 的方法,类似于 "classes" 方法吗?
从技术上讲,Board
与从 Clas(s)
到 Subject
的关系无关。但是,您可以像对待任何其他 附加数据透视列 一样对待 board_id
并像记录的那样插入它 here
$subjectId = 1;
$boardId = 1;
$class = Clas::find(1);
$class->subjects()->attach($subjectId, ['board_id' => $boardId]);
或者,如果您已经收集了所有 id,您也可以只在枢轴上插入一个 table。 (attach()
反正也没做什么事)
$data = array();
$data['board_id'] = 1;
$data['class_id'] = 1;
$data['subject_id'] = 1;
DB::table('board_class_subjects')->insert($data);
我认为这是一个解决方案 many-to-many 与枢轴 table board_classes 和 subjects[=22= 的关系]
board_classes
id
board_id
class_id
board_class_subjects
id
board_class_id
subject_id
这是我的 tables
板
id
board_name
类
id
class_name
科目
id
subject_name
board_classes
id
board_id
class_id
board_class_subjects
id
board_id
class_id
subject_id
我在我的模型中写了以下关联
Board.php
public function classes()
{
return $this->belongsToMany('Clas','board_classes','board_id','class_id');
}
Clas.php
public function subjects()
{
return $this->belongsToMany('Subject','board_class_subjects','class_id', 'subject_id');
}
我正在尝试使用以下代码在数据透视表 table board_class_subjects
中插入示例数据:
$data = array();
$data['board_id'] = 1;
$data['class_id'] = 1;
$data['subject_id'] = 1;
$pivot = Board::find(1);
$pivot->subjects()->attach($data);
但出现如下错误:
Call to undefined method Illuminate\Database\Query\Builder::subjects()
我知道在我的 Board 模型中没有名称为 subjects 的方法,但不确定如何实现它,所以我可以使用 attach
方法在 board_class_subjects
数据透视表 table 中插入数据。我应该在 Board 模型中添加另一个名为 sections 的方法,类似于 "classes" 方法吗?
从技术上讲,Board
与从 Clas(s)
到 Subject
的关系无关。但是,您可以像对待任何其他 附加数据透视列 一样对待 board_id
并像记录的那样插入它 here
$subjectId = 1;
$boardId = 1;
$class = Clas::find(1);
$class->subjects()->attach($subjectId, ['board_id' => $boardId]);
或者,如果您已经收集了所有 id,您也可以只在枢轴上插入一个 table。 (attach()
反正也没做什么事)
$data = array();
$data['board_id'] = 1;
$data['class_id'] = 1;
$data['subject_id'] = 1;
DB::table('board_class_subjects')->insert($data);
我认为这是一个解决方案 many-to-many 与枢轴 table board_classes 和 subjects[=22= 的关系]
board_classes
id
board_id
class_id
board_class_subjects
id
board_class_id
subject_id