php - 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。
有什么问题?
解决方案
来自 Laravel 文档:
第三个参数是要定义关系的模型的外键名称,而第四个参数是要加入的模型的外键名称
我相信你已经把它们换了。尝试在多对多关系中将 trip_id 与 user_id 交换
推荐阅读
- reactjs - 如何在 react-redux 上为 useSelector 添加 debounce?
- spring-boot - Spring Boot 安全性 - antMatchers、regexMatchers
- postgresql - 插入到 postgres DB:无效的字符串格式(解析异常错误)
- machine-learning - 如何使用烧瓶在网站上显示 mnist 数字数据集的图像
- vue.js - 为什么带有静态对象的道具会在更改时重新渲染组件?
- javascript - 在 React 和 Express 中处理查询
- wordpress - 如何更改 Woocommerce 面包屑中的一个链接?
- java - 访问自定义枚举字段
- mysql - MariaDB / MySQL:在触发器中插入选择不会插入任何内容
- php - 无法使用 Angular8 通过 JWT 授权