Я думаю, что ваша структура запросов неверна.
1)
В первом запросе у вас есть комментарий типа //Gets all users that are tenants
, но вы используете метод first()
.
Если вы хотите, чтобы все пользователи с арендатором типа, вы можете использовать get()
метод
//Gets all users that are tenants
$tenants = User::where('userType', 'tenant')->get();
А если вы хотите только одного пользователя с типом арендатора, вы можете использовать first()
метод.
//Gets all users that are tenants
$tenants = User::where('userType', 'tenant')->first();
2)
Во втором запросе $Prefereances = TenantPreferance::all()->first();
вы используете all()
и first()
оба метода.
Если вы хотите, чтобы все настройки all()
метод достаточно, чтобы получить все настройки.
//Gets all preferances
$Prefereances = TenantPreferance::all();
3)
Теперь вы хотите, чтобы настройки соответствовали идентификатору арендатора
Здесь, если вы использовали first()
метод в 1-м запросе, вы можете сделать запрос следующим образом:
//Gets the preferences that match a tenant id
$prefs = Prefereances::where('user_id', $tenants->id)->first();
И если вы использовали метод get()
в 1-м запросе, то вы можете выполнить запрос, используя метод whereIn()
, но перед этим вы должны брать только идентификаторы от арендаторов, для которых вы можете использовать pluck()
метод
$tenantIds = User::where('userType', 'tenant')->pluck('id');
И тогда вы можете использовать whereIn()
метод.
//Gets the preferences that match a tenant id
$prefs = Prefereances::whereIn('user_id', $tenantIds)->where()->get();
Теперь вы хотите отфильтровать страну, в которую вошел пользователь, поэтому вам нужно сначала написать эту строку в своей функции
//Gets the current signed in users property
$property = PropertyAdvert::where('user_id', Auth::user()->id)->first();
Ваш финализированный код функции должен быть таким,
public function searchresults(){
//Gets the current signed in users property
$property = PropertyAdvert::where('user_id', Auth::user()->id)->first();
//Gets all users that are tenants
$tenants = User::where('userType', 'tenant')->get();
//Gets the prefereances that match a tenant id
$prefs = TenantPreferance::whereIn('user_id', $tenantIds)->where('country',$property->country)->get();
$users = $prefs;
return view('pages/account/search/results', compact('users'));
}
Надеюсь, вы поймете это со спокойным умом, потому что кажется, что вы новичок в Laravel.
Пожалуйста, просмотрите этот код и попробуйте, а затем, если у вас есть какие-либо сомнения, прокомментируйте.