在laravel 5.2中处理多对多的关系

时间:2016-06-02 11:03:56

标签: php sql database laravel

我制作了第三张桌子,因为我在第三张桌子里需要额外的柱子。 我在两个模型中都写过关系方法但是id不是 移动 用户模型方法是

   class User extends Model
{
    protected $fillable = [
        'user_type_id', 'accountType', 'email', 'password',  'userName', 'gender', 'dob', 'country', 'city', 'mobileNo', 'cnic', 'address',
        'degreeLevel', 'degreeTitle', 'institution', 'complitionYear', 'acedCountry', 'experience', 'workExperience', 'industry', 'perCountry', 'cv'

    ];

    protected $table = 'users';

    /********************************************************************/
    /*     Relationship between User and Ranklist     */
    /*******************************************************************/

    public function RankList()
    {
        return $this->hasMany('App\Models\RankList','user_id');

    }


    public function Company()
    {
        return $this->hasMany('App\Models\Company');

    }



    public function newsAndEvents()
    {
        return $this->hasMany('App\Models\newsAndEvents','user_id');

    }
    /********************************************************************/
    /*     Relationship between User and user type     */
    /*******************************************************************/


    public function UserType()
    {
        return $this->belongsTo('App\Models\UserType','user_type_id');

    }
    public function course_outline()
    {
        return $this->belongsTo('App\Models\CourseOuline','user_id');

    }
    public function Jobs()
    {
        return $this->belongsToMany('App\Models\Job','Job_User','User_id','Job_id');
    }


    public function Skill_User()
    {
        return $this->belongsToMany('App\Models\Skill','Skill_User','Skill_id','User_id');
    }

    public function Feedback_User()
    {
        return $this->belongsToMany('App\Models\Feedback','Feedback_User','Feedback_id','User_id');
    }
}
    in job model method is


     class Job extends Model
{

   use SoftDeletes;
    protected $dates = ['deleted_at'];
    /**************************************************/
    /*            Company Post Job                    */
    /**************************************************/

    protected $fillable = [
        'jobType', 'jobTitle','skills','industry', 'department', 'vacancy', 'qualification', 'degreeTitle', 'miniExperience', 'jobCategory',
        'city', 'gender', 'companyName', 'description','posting_date', 'applied_date', 'companyLogo',

    ];

    protected $table = 'jobs';

    /**************************************************/
    /*     Relationships between company and job      */
    /**************************************************/

    public function Company()
    {
        return $this->belongsTo('App\Models\Company','company_id');

    }
    public function job_skill()
    {
        return $this->belongsToMany('App\Models\Skill','Job_Skill','Job_id','skill_id');
    }
    public function Users()
    {
        return $this->belongsToMany('App\Models\User','Job_User','User_id','Job_id');
    }

}
pivot table code  is

    class Job_User extends Model
    {
        protected $fillable = [
          'cv','current_salary','expected_salary','status',
        ];
        protected $table = 'jobs_users';
    }

但显示用户申请工作错误 完整性约束违规:1452无法添加或更新子行:外键约束失败(bridging_the_gapjobs_users,CONSTRAINT jobs_users_user_id_foreign FOREIGN KEY(user_id)REFERENCES {{1 (users)ON DELETE CASCADE ON UPDATE CASCADE)(SQL:插入id jobs_userscvcurrent_salaryexpected_salaryupdated_at)值(1st,15,000-19,999,30,000-39,999,2016-06-02 10:57:02,2016-06-02 10:57:02))

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

//model jobs
public function Jobs()
{
    return $this->belongsToMany('App\Models\jobs_users');    
}

//model users
public function Users()
{
    return $this->belongsToMany('App\Models\jobs_users');  
}

//model pivot - jobs_users
public function user() {
    return $this->belongsTo('App\Models\user');
}

public function jobs() {
    return $this->belongsTo('App\Models\job');
}

这是制作枢轴(多对多关系)的基础知识。对于更多字段,您必须在枢轴模型中定义额外字段等...

希望有所帮助