如何从HasMany关系中分离元素?

时间:2019-06-03 18:33:12

标签: laravel eloquent

save关系类上有saveManyHasMany方法,但是dissociate(Many) / detach(Many)方法在哪里?也没有内置的方法来获取逆关系方法,因此从HasMany关系对象中分离ID /模型数组的最佳方法是什么。

当前我正在使用:

$hasMany = $parent->theRelationship(); // Get the relationship object.
$child = $hasMany->getRelated(); // Get an empty related model.
$key = $hasMany->getForeignKeyName(); // Get the name of the column on the child to set to NULL.
$child->findMany($IDs)->each(function($model) use ($key) {
  $model->$key = NULL;
  $model->save();
});

这可能会更短一些,例如:

$hasMany = $parent->theRelationship();
$hasMany->dissociate($IDs);

如果您对泰勒为何没有实施此事有任何正式的回答,那么我将给予奖励,我已经在GitHub上看到了他这种关闭功能的要求。

2 个答案:

答案 0 :(得分:1)

您可以像这样使用detach;

$parent->theRelationship()->detach([1,2,3])

传递ID数组的地方。

从Laravel文档中: “为方便起见,附加和分离还接受ID数组作为输入”

答案 1 :(得分:1)

我不确定为什么没有功能,但是要比您的示例更具性能,可以使用以下数据库类:

printf("%ls of sisze %u", wbuff, (unsigned int)(wcslen(wbuff)));