【发布时间】:2019-03-25 09:04:08
【问题描述】:
我正在从事 Laravel 项目,但面临关系问题。
我有 CarAddress 模型和用户模型
在 caraddress 表中,我有 id,sessionId,
在 users 表中,我有 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(); 返回 $carAddress;
结果是:
[
{
"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。 Laravel 默认为外来的 id,这通常是正确的调用。
-
是的,根据他上面的问题,我认为他有一个与 userId 相关的列 sessionId
-
请注意belongTo关系可以接受3个参数,第一个是相关类,第二个是子表的外键,第三个是与父表中第二个参数相关的列