Laravel数据透视表正在添加“GroupMembers”.'GroupId'为空


Laravel pivot table is adding `GroupMembers`.`GroupId` is null

我正在用成员和组来构建应用程序,并且成员可以在组中。

使用 laravel 框架

我有以下型号:

class Group extends Model
{
    protected $table = 'Groups';
    public function GroupMembers()
    {
        return $this->belongsToMany('Member', 'GroupMembers', 'GroupId', 'MemberId');
    }
}
class Member extends Model
{
    protected $table = 'members';
    protected static $rules = [
        'Name' => 'unique:members'
    ];
    public function Groups()
    {
        return $this->belongsToMany('Group', 'GroupMembers', 'MemberId', 'GroupId');
    }

}

当我尝试让一个组的所有组成员都与以下人员联系时:

public function getIndex()
{
    $member = Group::findOrFail(3);
    //$member = Member::findOrFail(1);
    //$results = $member;
    $results = $member->GroupMembers;
    dd(DB::getQueryLog());
    dd($results);
    //$results =GroupMember::getGroupMembers(1);

    return View::make('hello')->with('results', $results);
}

我得到 0 个结果,因为它正在向查询添加为空:

select  `members`.*
,       `GroupMembers`.`GroupId` as `pivot_GroupId`
,       `GroupMembers`.`MemberId` as `pivot_MemberId`
,       `GroupMembers`.`created_at` as `pivot_created_at`
,       `GroupMembers`.`updated_at` as `pivot_updated_at` 
from    
        `members` 
inner join 
        `GroupMembers` on `members`.`id` = `GroupMembers`.`MemberId` 
where 
    `GroupMembers`.`GroupId` is null

这是从哪里来的,我该如何删除它?

我假设GroupIdMembersId是各自表的主键?
您需要定义任何不同于默认值 ( id ) 的主键列名称

将其添加到您的模型中

protected $primaryKey = 'GroupId';