首页 > 解决方案 > 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
}
]

标签: phplaravel

解决方案


如果要连接两个表中的 sessionId,则需要指定两个键:

function users(){
    return $this->belongsTo('App\User','sessionId', 'sessionId');
}

您的代码还有其他一些奇怪的地方:

  1. 拥有一个 id 而不是将其用作外键是非常不寻常的。我希望你知道你在这里做什么。
  2. 由于这是一个belongsTo(一对多),所以关系不应该是复数。
  3. 如果这是 Laravel 的新数据库,您应该遵循命名约定。(session_id)

我强烈建议您在这里阅读整个文档:https ://laravel.com/docs/5.7/eloquent-relationships


推荐阅读