gpt4 book ai didi

laravel-5 - 删除 Eloquent 记录之间的关系

转载 作者:行者123 更新时间:2023-12-02 23:01:58 25 4
gpt4 key购买 nike

我创建了两个扩展 Eloquent 的类(联系人和标签),它们具有多对多关系。我正在尝试创建取消标记联系人的方法,但找不到任何文档来说明如何删除关系表中的条目而不删除标签本身或联系人。

到目前为止,我已经尝试过

$contact = Contact::find($contact_id);
$tag = $contact->tags->where('id', '=', $id);
$tag->delete();

这只会删除联系人。这是有道理的,它不起作用,但我不确定还能尝试什么。我不想删除联系人或标签,只想删除两者之间的关系。

我现在也尝试过:

$tag = Tag::find($id);
$tag->contacts->detach($contact_id);

这给了我错误:

BadMethodCallException in Builder.php line 2071: Call to undefined method Illuminate\Database\Query\Builder::detach()

以及

$tag = Tag::find($id);
$contact = $tag->contacts->find($contact_id);
$tag->contacts->detach($contact);

这给了我错误:

FatalErrorException in Tag.php line 34: Call to undefined method Illuminate\Database\Eloquent\Collection::detach()

Contacts 和 Tags 类都扩展了 Illuminate\Database\Eloquent\Model;

最佳答案

您可以将detach用于多对多关系

http://laravel.com/docs/5.1/eloquent-relationships#inserting-many-to-many-relationships

您只需传入标签的 ID 即可。注意“标签”后面的括号

$contact->tags()->detach($id);

由于它是多对多,因此您也可以执行相反的操作

$tag->contacts()->detach($contact_id);

同样,您可以使用attach来创建关系。只是猜测,因为您不知道分离,所以您可能也可以使用附加。附加可以采用单个 ID 或 ID 数组(以及一些更高级的选项)

$contact->tags()->attach($id);
$contact->tags()->attach([$id1, $id2, ...]);

关于laravel-5 - 删除 Eloquent 记录之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com