如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值

Posted

技术标签:

【中文标题】如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值【英文标题】:How to insert multiple value in pivot table using attach or sync method in Laravel 【发布时间】:2018-12-17 05:49:09 【问题描述】:

我正在使用 laravel 多对多关系。在我的数据库种子文件中,我使用 attach() 方法在 pivot_table 添加多个插入 -

 $role_admin->permissions()->attach(array($permission_create,$permission_read,$permission_update,$permission_delete));

但是当我运行db:seed artisan command 时,它会显示此错误。

PDOException::("SQLSTATE[HY000]: 一般错误: 1366 整数值不正确: '"id":1,"name":"Create","slug":"Create","description":"这是基本的创建权限","created_at":"2018-12-17 05:23:31","upda' for column 'permission_id' at row 1")

如果我使用 sync() 而不是 attach() 则显示此错误。

ErrorException : 非法偏移类型

现在,我想知道如何在我的permisson_role pivot Table 中一次多个值

这是我的RoleTableSeeder 示例...

class RoleTableSeeder extends Seeder
 
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()

    $permission_create=Permission::where('slug','Create')->first();
    $permission_read=Permission::where('slug','Read')->first();
    $permission_update=Permission::where('slug','Update')->first();
    $permission_delete=Permission::where('slug','Delete')->first();

    $role_admin=new Role;
    $role_admin->name="Admin";
    $role_admin->slug=ucfirst("admin");
    $role_admin->description="This is Super-Admin Role";
    $role_admin->save();
    $role_admin->permissions()->attach(array($permission_create,$permission_read,$permission_update,$permission_delete));
    //$role_admin->permissions()->sync(array($permission_create,$permission_read,$permission_update,$permission_delete));




【问题讨论】:

【参考方案1】:

->first() 不返回 id,你应该这样使用:->first()->id

【讨论】:

以上是关于如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel如何通过ajax按名称或ID搜索在前端仅显示用户帐户的附加患者

Laravel 多对多同步与附加列

在 laravel 中,使用我从 ajax 过滤的数据将 VUE 组件“附加”到 DOM 的正确方法是啥?

Laravel:保存/附加/同步自定义枢轴模型(belongsToMany)

使用 Laravel 同步或更新 ExistingPivot -- 如何根据第三个条件进行填充

Laravel ajax存储请求errormessage,数据附加到视图