Php Laravel多对多返回空集合

Php Laravel多对多返回空集合,php,laravel,eloquent,relationship,Php,Laravel,Eloquent,Relationship,我有两个拉威尔模型,我想相互联系。一次旅行可以有多个用户,一个用户可以进行多次旅行。模型是这样设置的 class Trip extends Model { public function users() { return $this->belongsToMany('App\User', 'trip_user', 'user_id', 'trip_id'); } } class User extends Model { public function

我有两个拉威尔模型,我想相互联系。一次旅行可以有多个用户,一个用户可以进行多次旅行。模型是这样设置的

class Trip extends Model {
    public function users() {
        return $this->belongsToMany('App\User', 'trip_user', 'user_id', 'trip_id');
    }
}

class User extends Model {
    public function trips() {
        return $this->belongsToMany('App\Trip', 'trip_user', 'trip_id', 'user_id');
    }
}
数据透视表称为“trip_user”,具有用户和trip的ID

当我试图通过

$oTrip->users()
我得到的是属于很多人的关系

BelongsToMany {#267 ▼
#table: "trip_user"
#foreignPivotKey: "user_id"
#relatedPivotKey: "trip_id"
#parentKey: "id"
#relatedKey: "id"
#relationName: "users"
#pivotColumns: []
#pivotWheres: []
#pivotWhereIns: []
#pivotValues: []
+withTimestamps: false
#pivotCreatedAt: null
#pivotUpdatedAt: null
#using: null
#accessor: "pivot"
#query: Builder {#266 ▶}
#parent: Trip {#259 ▶}
#related: User {#264 ▶}
-currentlyAttached: null
}
当我这样做的时候

$oTrip->users
我得到一个空的集合。我可以确认表中确实有一个条目具有正确的trip id和一些用户id


可能有什么问题?

来自Laravel文档:

第三个参数是定义关系的模型的外键名,而第四个参数是要加入的模型的外键名


我相信你已经换了。尝试在多对多关系中将trip\u id与user\u id交换

您创建了pivot的模型吗?我必须这样做吗?我想我只需要定义这两个模型,然后在relationship@TheNumb3rMan当然,您不必为透视表定义模型。谢谢,这解决了它!我以前尝试过交换密钥,但只在一次关系中尝试过,而你必须在两次关系中都这么做