php - Laravel 模型关系不起作用
问题描述
我正在从事 Laravel 项目,但面临关系问题。
我有 CarAddress 模型和用户模型
在 caraddress 表中,我有 id,sessionId,
在用户表中,我有 id 和 sessioId。
CarAddress 模型中的代码
protected $table = 'caraddress';
public $primaryKey ='id';
function users(){
return $this->belongsTo('App\User','sessionId');
}
用户模型中的代码
public function CarAddress(){
return $this->hasMany('App\CarAddress');
}
控制器代码 $carAddress = CarAddress::with('users')->get(); 返回$汽车地址;
结果是:
[
{
"id": 25,
"sessionId": "dqEeucFqkNzSUQtPxqdxqvJbCqyrAuVXVqIf3y6l",
"residentialStatus": "homeowner",
"addressYears": "1",
"addressMonths": "0",
"totalMonths": "12",
"postcode": "SW1A 2AA",
"buildingNumber": null,
"street": "10 Downing Street",
"town": "London",
"county": null,
"country": null,
"buildingName": null,
"userRefference": "FFD",
"created_at": "2018-10-20 22:30:44",
"updated_at": "2018-10-19 20:18:22",
"users": null
}
]
解决方案
如果要连接两个表中的 sessionId,则需要指定两个键:
function users(){
return $this->belongsTo('App\User','sessionId', 'sessionId');
}
您的代码还有其他一些奇怪的地方:
- 拥有一个 id 而不是将其用作外键是非常不寻常的。我希望你知道你在这里做什么。
- 由于这是一个belongsTo(一对多),所以关系不应该是复数。
- 如果这是 Laravel 的新数据库,您应该遵循命名约定。(session_id)
我强烈建议您在这里阅读整个文档:https ://laravel.com/docs/5.7/eloquent-relationships
推荐阅读
- javascript - reactjs中如何从url获取参数?
- documentation - 是什么导致 sphinx 输出“警告:意外缩进”?
- ios - CADisplayLink 计时器无法正常工作 | 迅速
- rust - AssertUnwindSafe 如何与 CatchUnwind 未来一起使用
- ios - 我的 swift iOS 应用程序总是在 MainViewController 中启动 - 最初无法在 SceneDeletage 中导航到 LoginViewController
- sqlite - SQLite 浏览器“修改表后检查外键时出错。更改将被还原。”
- illegalstateexception - 即使线程持有 ReentrantLock 对象,也会发生 IllegalMonitorStateException
- ios - 无论选择什么行,SwiftUI 列表视图都会打开相同的 PDF - 也无法删除列表的扩展名
- isabelle - 一对空的“证明 qed”在 Isabelle 中是如何工作的?
- javascript - axios + 查询字符串与 jQuery,POST 数据被查询字符串破坏