Laravel多对多返回空集合

时间:2019-07-18 22:17:41

标签: php laravel eloquent relationship

我在Laravel中有两个要相互关联的模型。一个行程可以有多个用户,一个用户可以进行多个行程。这样建立模型。

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”,其中包含用户和旅程的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

我得到一个空的收藏集。我可以确认表中确实存在带有正确旅程ID和某些用户ID的条目。

怎么了?

1 个答案:

答案 0 :(得分:0)

来自Laravel文档:

  

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

我相信您已经将它们切换了。尝试在多对多关系中将trip_id与user_id交换