猿问

Laravel 多对多返回空集合

我想在 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 的条目。


可能有什么问题?


阿晨1998
浏览 138回答 1
1回答

慕仙森

来自 Laravel 文档:第三个参数是您在其上定义关系的模型的外键名称,而第四个参数是您要加入的模型的外键名称我相信你已经把它们换了。尝试在多对多关系中将 trip_id 与 user_id 交换
随时随地看视频慕课网APP
我要回答