调用未定义的方法Illuminate \ Database \ Eloquent \ Relations \ HasOne :: experience()

时间:2019-06-05 06:41:39

标签: laravel-5 eloquent

我有用户模型,在该模型下有培训师,在此之下,我有TrainerExperience和TrainerAchievement。

我的用户模型如下:

    public function trainer(){
        return $this->hasOne(Trainer::class);
    }

我的教练模型:

    public function user(){
        return $this->belongsTo(User::class);
    }

    public function achievements() {
        return $this->hasMany(TrainerAchievement::class);
    }

    public function experience() {
        return $this->hasMany(TrainerExperience::class);
    }

TrainerExperience模型:

    protected $casts = [
        'experience' => 'array',
    ];

    public function trainer() {
        return $this->belongsTo(Trainer::class);
    }

Trainer成就模型:

    protected $casts = [
        'achievement' => 'array'
    ];

    public function trainer() {
        return $this->belongsTo(Trainer::class);
    }

我正在尝试将培训师的数据及其经验和成就保存到表中。但是它不断使我出错。

Call to undefined method Illuminate\Database\Eloquent\Relations\HasOne::experience()

我的培训师控制器:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Trainer;    
use Illuminate\Http\Request;

class TrainerController extends Controller
{
    //
    public function edit($user) {
        $user = User::findOrFail($user); 
        return view('trainer.edit',[
        'user' => $user            
        ]);
    }

    public function index($user) {
        $user = User::findOrFail($user); 
        return view('trainer.index',[
            'user' => $user
        ]);
    }

    public function update($user) {

        // dd($data = request());

        $data = request()->validate([
            'dob' => 'required|date',
            'mobile' => 'required|numeric',
            'address' => 'required',
            'id_proof' => 'required',
            'id_registration' => 'required',
            'high-school-name' => '',
            'graduate-college-name' => '',
            'graduate-college-course' => '',
            'post-graduate-college-name' => '',
            'post-graduate-school-course' => '',
            'phd' => '',
            'training_experience' => 'required',
            'people-trained' => 'required',
            'paid-training' => 'required',
            'course-material' => 'required',
            'training_category.*' => 'required',
            'youtube' => '',
            'twitter' => '',
            'instagram' => '',
            'facebook' => '',
            'blog' => '',
            'website' => '',
            'meetup' => '',
            'linkedin' => '',
            'experiencesDesignation.*' => '',
            'experiencesOrganization.*' => '',
            'achievements.*' => '',   
        ]);


    // dd($data);


        auth()->user()->trainer()->create([
            'date_of_birth' => $data['dob'],
            'mobile_number' => $data['mobile'],
            'address' => $data['address'],
            'id_proof' => $data['id_proof'],
            'id_registration_number' => $data['id_registration'],
            'high_school_name' => $data['high-school-name'],
            'graduation_college_name' => $data['graduate-college-name'],
            'graduation_course_name' => $data['graduate-college-course'],
            'post_graduation_college_name' => $data['post-graduate-college-name'],
            'post_graduation_course_name' => $data['post-graduate-school-course'],
            'phd_field_of_study' => $data['phd'],
            'total_duration_of_training' => $data['training_experience'],
            'no_of_people_trained' => $data['course-material'],
            'paid_training' => $data['paid-training'],
            'training_category' => $data['dob'],
            'course_material_ready' => $data['course-material'],
            'youtube_link' => $data['youtube'],
            'twitter_link' => $data['twitter'],
            'youtube_link' => $data['youtube'],
            'instagram_link' => $data['instagram'],
            'facebook_link' => $data['facebook'],
            'linkedin_link' => $data['linkedin'],
            'blog_link' => $data['blog'],
            'website_link' => $data['website'],
            'meetup_group_link' => $data['meetup'],
            'application_submitted' => '1',
        ]);

        $trainer_experience =array(
            'experiencesDesignation' => $data['experiencesDesignation'],
            'experiencesOrganization' => $data['experiencesOrganization'],
        );

        $trainer_achievement = array(
            'achievements' => $data['achievements'],
        );

        auth()->user()->trainer()->experience()->create([
            'experience' => $trainer_experience,
        ]);


        auth()->user()->trainer()->achievements()->create([
            'achievement' => $trainer_achievement,
        ]);

        return redirect("/home");

    }
}

除了User之外,我没有在其他任何地方使用过hasOne。我的经验表已连接到Trainer。 这种错误的原因是什么?

0 个答案:

没有答案