雄辩模型多对一关系


Eloquent Model Many to One Relationship

举个例子:

我有一个表users,字段为id, name, city。我有另一个表,其中包含城市的名称。表名为cities,字段为:id, name。因此,我将一个城市的id(主键)存储在表userscity列中。在获取用户雄辩模型的同时,获取城市名称的最佳方式是什么?

按照惯例,您将关系命名为city(),但是还有一个属性city是外键,因此您不能访问相关模型。

如果是这样,那么我建议将外键重命名为city_id或类似的东西,然后它将工作:

$user->city; // City model
$user->city->name;

否则,如果不能更改模式,则重命名关系:

// User model
public funciton relatedCity()
{
  return $this->belongsTo('City', 'city');
}
// then
$user->relatedCity->name;

假设您已经配置了Models

// find a user named John
$user = User::where('name', '=', 'John')->first();
// get the city of the user
$userCity = $user->city;