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

问题描述

我正在使用 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()而不是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));


}
}

标签: phplaravel

解决方案


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


推荐阅读