Php BadMethodCallException属于第5.4节

Php BadMethodCallException属于第5.4节,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,请允许我尝试在Laravel 5.4中建立多对多关系,但我总是会遇到以下错误: Builder.php第2443行中的BadMethodCallException:调用未定义 方法\Database\Query\Builder::categories() 我认为我的代码是好的,我无法修复它,请任何帮助 多谢各位 这是我的代码: 用户模型 class User extends Model { public function categories() { return

请允许我尝试在Laravel 5.4中建立多对多关系,但我总是会遇到以下错误:

Builder.php第2443行中的BadMethodCallException:调用未定义 方法\Database\Query\Builder::categories()

我认为我的代码是好的,我无法修复它,请任何帮助

多谢各位

这是我的代码:

用户模型

class User extends Model
{
    public function categories()
    {
        return $this->belongsToMany('App\Category', 'user_categorys');
    }

}
class Category extends Model
{

    public function users()
    {
        return $this->belongsToMany('App\User', 'user_categorys');
    }

}
类别模型

class User extends Model
{
    public function categories()
    {
        return $this->belongsToMany('App\Category', 'user_categorys');
    }

}
class Category extends Model
{

    public function users()
    {
        return $this->belongsToMany('App\User', 'user_categorys');
    }

}
调用方法

$user = User::where('id',$id_user)->first();
            foreach ($request->input("idcategs") as $value) {
                $user->categories()->save($value);
            }

使用多对多关系附着或分离模型时,应使用
attach()
detach()
sync()
方法

如果
idcategs
是一个ID数组,请执行以下操作:

$user = User::find($id_user);
$user->attach($request->idcategs);
如果是准备好的数据数组,则需要首先创建类别:

$categoriesIds = [];
$user = User::find($id_user);
foreach ($request->idcategs as $value) {
    $categoriesIds[] = Category::create($value)->id;
}
$user->attach($categoriesIds);

当使用多对多关系连接或分离模型时,应使用
attach()
detach()
sync()
方法

如果
idcategs
是一个ID数组,请执行以下操作:

$user = User::find($id_user);
$user->attach($request->idcategs);
如果是准备好的数据数组,则需要首先创建类别:

$categoriesIds = [];
$user = User::find($id_user);
foreach ($request->idcategs as $value) {
    $categoriesIds[] = Category::create($value)->id;
}
$user->attach($categoriesIds);
你弄错了: 如果您有多对多关系,一个或多个关系应:

public function users()
    {
        return $this->belongsToMany('App\User', 'foreign_key');
    }
您必须定义透视表类别。\u用户

如果您弄错了: 如果您有多对多关系,一个或多个关系应:

public function users()
    {
        return $this->belongsToMany('App\User', 'foreign_key');
    }

您必须定义透视表类别\u用户

此错误表示您在查询生成器上调用的是
categories()
,而不是模型。您确信您的代码中有从
first()
调用中分配的
$users
吗?此错误表示您在查询生成器上调用的是
categories()
,而不是模型。您确信您的代码中有从
first()
调用分配的
$users
吗?