我创建了两个扩展Eloquent(联系人和标签)的类,它们具有ManyToMany关系.我正在尝试创建取消标记联系人的方法,但是无法找到任何文档来告诉如何删除关系表中的条目而不删除标记本身或联系人.
到目前为止,我已经尝试过了
$contact = Contact::find($contact_id);
$tag = $contact->tags->where('id', '=', $id);
$tag->delete();
Run Code Online (Sandbox Code Playgroud)
这只会删除联系人.它有意义,它不起作用,但我不知道还有什么可以尝试.我不想删除联系人或标签,只是两者之间的关系.
我现在也尝试过:
$tag = Tag::find($id);
$tag->contacts->detach($contact_id);
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
Builder.php第2071行中的BadMethodCallException:调用未定义的方法Illuminate\Database\Query\Builder :: detach()
以及
$tag = Tag::find($id);
$contact = $tag->contacts->find($contact_id);
$tag->contacts->detach($contact);
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
Tag.php第34行中的FatalErrorException:调用未定义的方法Illuminate\Database\Eloquent\Collection :: detach()
Contacts和Tags类都扩展了Illuminate\Database\Eloquent\Model;