在null上调用成员函数addBusiness()

时间:2018-01-16 06:43:24

标签: laravel

我正在尝试保存user_id与关系我创建了用户和业务之间的关系,用户可以在其中添加许多关系,但它显示此错误

   My Controller 

                          $fieldsValidation = [

        'business_name' => 'required',
        'business_url' => 'required',
        'is_available' => 'required',
    ];
    $validator = Validator::make($request->all(), $fieldsValidation);

    if ($validator->fails()) {
        $resultArray = [
            'status' => 0,
            'message' => $validator->errors()->first(),
            'dataArray' => []
        ];
    } else {
        $business = new Business($request->all());
        Auth::user()->addBusiness()->save($business);

        $resultArray = ['status' => 1, 'message' => 'Business Name added successfully!', 'dataArray' => $business];
    }
    return Response::json($resultArray, 200);

我的用户模型

    public function addBusiness()
{
    return $this->hasMany('App\Business','user_id','id');
}

        My Business Model 
         public function user()
{
    return $this->belongsTo('App\User','user_id','id');
}

任何帮助都将不胜感激

2 个答案:

答案 0 :(得分:1)

仅当addBusiness()不是Auth::user()时,您才可以尝试拨打null方法。

试试这个:

if(Auth::check()){
     Auth::user()->addBusiness()->save($business);
} else {
//user not logged in do something else
}

答案 1 :(得分:0)

您的错误消息显示您尝试在null上调用addBusiness()。我看到您拨打addBusiness()的唯一地方是Auth::user()->addBusiness()

这意味着Auth::user()返回null。

当您未登录时,

Auth::user()将返回null。如果您所在的路由未受正确的auth中间件保护并且您以非默认方式登录,它也将返回null守护。如果您使用的是未受保护的路线并且您使用非默认警卫(例如api警卫)登录,则可以使用$request->user('api')auth()->guard('api')->user()来吸引用户。