我有一个模型Mailgroup和一个CommunicationType模型。
我的邮件组可以具有多个CommuniationType。这是我的关系:
邮件组模型:
public function communicationTypes()
{
return $this->hasMany('App\CommunicationType');
}
CommunicationType模型:
public function mailgroup()
{
return $this->belongsTo('App\ImageRequest');
}
这是我尝试存储新邮件组的代码。
$data = $this->request->all();
$mailgroup = new Mailgroup($data);
$mailgroup->communicationTypes()->sync($data['communication_types']);
$ data的结果
array:5 [▼
"_token" => "j8lcEMggCakzANNbeVLYZttdOLUwJYKIJi0m85e6"
"name" => "a"
"administrator" => "abc"
"communication_types" => array:2 [▼
0 => "a"
1 => "a"
]
"site_id" => 4
]
错误:
调用未定义的方法Illuminate \ Database \ Query \ Builder :: sync()
我在这里做错什么了吗?
答案 0 :(得分:3)
没有用于一对多关系的sync
方法,您将不得不使用save
或saveMany
。
来自docs:
Eloquent提供了方便的方法来向其中添加新模型 关系。例如,也许您需要插入一个新的注释 用于Post模型。代替手动设置post_id属性 在评论上,您可以直接从 关系的保存方法:
$comment = new App\Comment(['message' => 'A new comment.']);
$post = App\Post::find(1);
$post->comments()->save($comment);
如果需要保存多个相关模型,则可以使用saveMany 方法:
$post = App\Post::find(1);
$post->comments()->saveMany([
new App\Comment(['message' => 'A new comment.']),
new App\Comment(['message' => 'Another comment.']),
]);
答案 1 :(得分:0)
邮件组尚未保存。首先保存/创建,然后同步:
$data = $this->request->all();
$mailgroup = Mailgroup::create($data);
$mailgroup->communicationTypes()->sync($data['communication_types']);