在save
关系类上有saveMany
和HasMany
方法,但是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上看到了他这种关闭功能的要求。
答案 0 :(得分:1)
您可以像这样使用detach;
$parent->theRelationship()->detach([1,2,3])
传递ID数组的地方。
从Laravel文档中: “为方便起见,附加和分离还接受ID数组作为输入”
答案 1 :(得分:1)
我不确定为什么没有功能,但是要比您的示例更具性能,可以使用以下数据库类:
printf("%ls of sisze %u", wbuff, (unsigned int)(wcslen(wbuff)));