![](/img/trans.png)
[英]How can I get data in relationship database Laravel models with vuejs, axios
[英]How can I fetch Laravel models by matching a value on a relationship?
我有一個User
模型,該模型具有諸如登錄名,ID,年齡等屬性。另一個表是帶有residence
列的user_data
。
如何獲得所有具有特定居住地的用戶? 我有這個:
User
模型:
public function user_data()
{
return $this->hasMany('App\Models\UserData');
}
public function FilterUser($request)
{
if ($request->has('city'))
{
$users = User::with('user_data')->where('residence', 'Warsaw')->get();
}
dd($users);
}
UserData
模型:
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
現在我得到這個錯誤:
未找到列:1054“ where子句”中的未知列“ residence”(SQL:從“ users”中選擇*,其中“ residence” = warsaw,而“ users..deleted_at”為null)
還有一個問題:
如果User
是我的主要模型,是否應該將其與上述關系聯系起來? hasMany()
或belongsTo()
?
使用whereHas()
查詢構建器方法:
$users = User::with('user_data')
->whereHas('user_data', function($query) {
$query->where('residence', 'Warsaw');
})
->get();
編輯-要使用$request
的值,您需要將變量導入whereHas()
的閉包中:
...
->whereHas('user_data', function($query) use ($request) {
$query->where('residence', $request->city);
})
...
編輯- 查詢范圍可能是更好的方法。 在User
模型中,添加以下方法:
function scopeInCity($query, $city)
{
return $query->whereHas('user_data', function($q) use ($city) {
$q->where('residence', $city);
});
}
然后,您可以按城市(模型之外)過濾所有用戶:
User::inCity($request->city)->get();
如果要獲取具有特定屬性關系的所有用戶,請使用whereHas,例如:
$users = User::whereHas('user_data', function($q) {
$q->where('residence', 'Warsaw');})->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.