将数据保存到数据透视表中 - 多对多关系 - Laravel

时间:2017-10-09 14:10:11

标签: php mysql laravel

我已经成功添加了我的表格,包括我的数据透视表。我的表格为managers categoriescategories_manager(数据透视表)。当我从类别控制器保存数据时,我收到类似

的错误
  

" SQLSTATE [42S02]:未找到基表或视图:1146表   ' system.category_manager'不存在(SQL:insert into   category_managercategory_idcreated_atupdated_at,   manager_id)值(2017年9月1日13:39:12,2017-10-09 13:39:12,   1))`

无论如何我是新手

PS:我已经保存了用户列表。此外,即使我收到错误,数据也会保存到类别表中,但不会保存到数据透视表

经理型号

public function categories()
    {
        return $this->belongsToMany('App\Category')
        ->withTimestamps();
    }

类别模型

 public function managers()
    {
        return $this->belongsToMany('App\Manager')
        ->withTimestamps();
    }

类别控制器

public function store(CategoryFormRequest $request)
    {
        $user = User::find(1);
        $category = new Category(array(
            'category_name'  => $request->get('name'),
        ));

        $user->categories()->save($category);
        return redirect('/categories/create')->with('status','Category successfully created');


    }

1 个答案:

答案 0 :(得分:1)

Laravel使用约定优于配置,这意味着遵循简单的约定可以避免复杂的配置。

数据透视表的名称应由两个表的单数名称组成,由非核心符号分隔,这些名称应按字母顺序排列。

因此您的数据透视表名称应为category_manager,但您说您创建的名称为categories_manager