【发布时间】:2015-12-01 19:43:34
【问题描述】:
我创建了两个扩展 Eloquent 的类(联系人和标签),它们具有 ManyToMany 关系。我正在尝试创建取消标记联系人的方法,但找不到任何文档来说明如何在不删除标签本身或联系人的情况下删除关系表中的条目。
到目前为止,我已经尝试过
$contact = Contact::find($contact_id);
$tag = $contact->tags->where('id', '=', $id);
$tag->delete();
这只会删除联系人。它不起作用是有道理的,但我不确定还有什么可以尝试的。我不想删除联系人或标签,只是两者之间的关系。
我现在也试过了:
$tag = Tag::find($id);
$tag->contacts->detach($contact_id);
这给了我错误:
Builder.php 第 2071 行中的 BadMethodCallException:调用未定义 方法 Illuminate\Database\Query\Builder::detach()
还有
$tag = Tag::find($id);
$contact = $tag->contacts->find($contact_id);
$tag->contacts->detach($contact);
这给了我错误:
Tag.php 第 34 行中的 FatalErrorException:调用未定义的方法 Illuminate\Database\Eloquent\Collection::detach()
Contacts 和 Tags 类都扩展了 Illuminate\Database\Eloquent\Model;
【问题讨论】:
-
我的问题是,当我尝试使用分离时,我这样做了:$tag->contacts->detach($id) 当我应该做 $tag->contacts()- >分离($id)。
标签: laravel-5 eloquent many-to-many laravel-5.1 detach