为laravel nova belongsToMany关系上的透视表属性创建更新操作

blmhpbnm  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(151)

我的模型看起来像下面的Product模型代码:

public class Product extends Model
{
    public function types()
    {
        return $this->belongsToMany(Type::class)
            ->withPivot('published');
    }
}

这里是Types模型:

public class Type extends Model
{
    public function products()
    {
        return $this->belongsToMany(Product::class)
            ->withPivot('published');
    }
}

在nova ProjectResource中,我有以下字段:

BelongsToMany::make('Types')
    ->fields(function() {
        return [
            Boolean::make('Published')
        ];
     })->actions(function() { return new Action/UpdateProductTypeActions }),

在nova TypeResource中,我有以下字段:

BelongsToMany::make('Projects')
        ->fields(function() {
            return [
                Boolean::make('Published')
            ];
         }),

我想使用Nova Actions更新透视表中的published属性
我已经创建了UpdateProductTypeActions,如下所示:

public function handle(ActionFields $fields, Collection $models)
    {
        foreach ($models as $model) {

        }
    }

我的问题是如何从这些操作中获取product_id

lokaqttq

lokaqttq1#

这将为您提供与类型有多对多关系的所有产品,这些类型与$model有多对多关系,$model是您的项目:

foreach($model->types as $type)
   {
     $products=$type->products->pluck(id);
   }

相关问题