我有以下表格:
用户
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();
答案 0 :(得分:2)
$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