我有以下表格:
用户
id
name
slug
city_id
城市
id
name
用户模式
public function city()
{
return $this->belongsTo('App'Models'City');
}
城市模式
public function users()
{
return $this->hasMany('App'Models'User');
}
我希望能够通过slug找到同一行中的城市名称。有没有一种方法可以做到这一点而不必构建查询?(名称字段冲突?(
我现在使用的查询
$this->user
->join('cities', 'cities.id', '=', 'users.city_id')
->select('users.*', 'cities.name as city_name')
->where('users.slug', '=', $slug)
->firstOrFail();
$user = User::find($userid);
或
$users = User::where('slug', $slug)->get(); //for many users
$user = User::where('slug', $slug)->first(); //for first user
然后只使用
$user->city->name;
$user->slug;
以获取城市变量。如果用户众多,请使用foreach