gpt4 book ai didi

Laravel 观察者未附加在数据透视表上

转载 作者:行者123 更新时间:2023-12-04 21:30:54 25 4
gpt4 key购买 nike

我有一个 Category与自身有父关系的模型:

public function parent()
{
return $this->belongsTo('App\Models\Category', 'parent_id', 'id');
}

以及与 FieldCategory 的多对多关系
public function fieldcategories()
{
return $this->belongsToMany('App\Models\FieldCategory');
}

我有一个 CategoryObserver观察父级是否有任何更改(例如,如果将类别移至子类别)是否有更改我想附加父级 FielCategory子类别的条目
public function updated(Category $category)
{
if($category->parent_id != null) {
$this->updateFieldCategories($category);
}
}
public function updateFieldCategories(Category $category)
{

$category->fieldcategories()->detach();

$parent = \App\Models\Category::find($category->parent->id);

$parentFieldCategoriesArray = [];
foreach ($parent->fieldcategories as $parentCat)
{
$parentFieldCategoriesArray[] = $parentCat->id;
}
$category->fieldcategories()->attach($parentFieldCategoriesArray);
}

它在 updated 上运行良好!但是当我尝试在 created 上做确切的事情时(当它选择了父级时)它失败了,我不知道为什么?
我已经尝试调试这个功能和 $parentFieldCategoriesArray填写必要的ID。它看起来像 $category->fieldcategories()->attach()方法没有触发,我不知道为什么。 created 上的数据透视表中没有记录并在 updated它工作正常。
我正在使用 Laravel 5.6

请问有什么帮助吗?

更新:
根据要求,这是我创建的函数
public function created(Category $category)
{
\Log::debug('PARENT: '.$category->parent_id);
if($category->parent_id != null) {
$this->updateFieldCategories($category);
}
}

最佳答案

1年前我问过这个问题。看到这个:Laravel observer for pivot table .

这里有2个选项。创建自定义 BelongsToMany或创建自定义特征 BelongsToManySyncEvents .

请查看 my question .

关于Laravel 观察者未附加在数据透视表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51797253/

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