首页 > 解决方案 > Laravel 5:获取具有不同id的关系模型

问题描述

我有一份模范合同和一名模范会员。每个合约都有一个主成员,但可以有一个子成员。

因此,我的表合约有一个 member_id 和一个 subMember_id。获取主成员 (member_id) 没有问题,但是如何获取具有 subMember_id 的第二个成员?

感谢帮助 ...

类合同:

class Contract extends Model
{
    public function members()
    {
        return $this->hasMany('App\Member');
    }

    public function getMember($id)
    {
        $contract = Contract::find($id);

        foreach($contract->members as $member) {
        return $member->name;
    }

    }

    public function getSubMember($id)
    {
        $contract = Contract::find($id);
        $primaryKey = 'subMember_id';

        foreach($contract->members::with('subMember_id')->get() as $member) {
        return $member->name;
    }
    }
}

班级成员:

class Member extends Model
{

public function contracts(){
    return $this->belongsToMany('App\Contract');
}
...
}

标签: laravelrelationshipprimary-key

解决方案


您可以根据 Contract 中的 submember_id 主键在 Contract 和 Member 之间建立关系。

在类合同

protected function SubMember(){

   return $this->hasMany('App\Member','Member_id ','SubMember_id ');
}

之后你可以使用这个

$contract = Contract::find($someID);

$subMemeberId = $contract->SubMember->Member_id;

推荐阅读