代码之家  ›  专栏  ›  技术社区  ›  Gabrielle-M

如何使用laravel中的attach或sync方法在透视表中插入多个值

  •  0
  • Gabrielle-M  · 技术社区  · 6 年前

    我正在处理Laravel多对多关系。 pivot_table 使用 attach() 方法-

     $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”表示第1行的列“permission_id”)

    如果我被使用 sync() 而不是 附件() 然后显示此错误。

    错误异常:非法偏移量类型

    现在,我想知道如何在我的 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 回复  |  直到 6 年前
        1
  •  1
  •   mustafa.akcoban    6 年前

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