Macroable.php第74行中的BadMethodCallException:方法专门化不存在

时间:2017-06-05 06:03:28

标签: laravel-5 laravel-5.3

我收到这个小问题。以下是源代码

医生模型:

class Doctor extends Model {
......
....
     public function specialization() {
        return $this->HasMany('App\Specialization');
    }
}

专业化模型:

class Specialization extends Model {
......
....
     public function doctor () {
        return $this->belongsTo('App\Doctor', 'id');
     }
} 

专业化模型:
这里spec_id是一个外键

class DoctorController extends Controller
{
......
....
 //Create a Doctor
    public function createDoctor(Request $request) {
    $doctor = new Doctor();
    $doctor->doctor_id = $request->input('doctor_id');
    // $doctor->spec_id = $request->input('spec_id');
    $doctor->spec_id = $request->specialization()->id;
    $doctor->dob = $request->input('dob');
    $doctor->age = $request->input('age');
    $doctor->gender = $request->input('gender');
    $doctor->qualification = $request->input('qualification');
    $doctor->experience = $request->input('experience');
    $doctor->phone_number = $request->input('phone_number');
    // $doctor->email = $request->user()->email;
    $doctor->email = $request->input('email');
    // $doctor->user_id = $request->user()->user_id;
    $doctor->user_id = $request->input('user_id');
    $doctor->save();
    return response()->json(['doctor' => $doctor], 201);
    }
}

请告诉我如何解决。

3 个答案:

答案 0 :(得分:0)

错误很可能来自... = $request->specialization()->id;,其中specialization()方法不存在。错误消息还提到了Macroable,这使我相信您在方法签名中对请求外观进行了类型提示,而不是正确的Illuminate\Http\Request类型。

检查文件顶部的use-statements。

答案 1 :(得分:0)

我认为在请求中没有专门化,你尝试使用Log,找出请求有什么

答案 2 :(得分:0)

Request $request不是一个雄辩的模型。

尝试使用 $ doctor而不是$ request $doctor->specialization->id我相信你能够获得身份证明。

此外,HasMany拼写错误。更改'H' - > 'h' 的