Laravel:如何使用范围与质量分配

时间:2018-03-21 13:48:55

标签: php laravel

我有两个具有多对多关系的实体:FormSection。有效部分必须“有效”,然后我有一个范围:

/**
 * 
 * @param Builder $query
 * @return Builder
 */
public function scopeActive($query) 
{
    return $query->where('is_active', true);
}

在渲染表单时,只需将活动部分传递给视图:

$sections = Section::active()->get();

问题在于,当发送POST请求时,我必须执行与sync关系的批量分配,并且无法控制传递的id(活动而非活动):

$form->sections()->sync($sectionsId);

有一种方法可以只附加活动部分而无需手动检查每个部分吗?

1 个答案:

答案 0 :(得分:0)

您必须首先使用 $ sectionIds 中的部分,然后必须使用 sync()方法。 试试这段代码,

$sectionIds = Section::active()->whereIn('id', [1, 2, 3])->pluck('id');
$form->sections()->sync($sectionIds);

我相信这会奏效。