Я пытаюсь преобразовать свое приложение PHP / JS в проект laravel, однако я новичок в Laravel и отношениях Eloquent.
Пока что я создал Модель User со следующими функциями, описывающими отношения db как красноречивые отношения:
public function configs() {
return $this->hasMany('App\Configuration', 'user_id');
}
public function rooms() {
return $this->hasManyThrough('App\Room','App\Configuration','user_id','config_id','id','id');
}
И модель Room
со связями:
public function configs() {
return $this->hasMany('App\Configuration', 'config_id');
}
public function user() {
return $this->hasOneThrough('App\Configuration', 'App\User', 'user_id','config_id','id','id');
}
Configuration.php
- это еще не заполнен какими-либо красноречивыми отношениями.
На мой вопрос: я хочу получить все комнаты с их config_id
для запрашивающего пользователя. Это мой SQL запрос:
SELECT *
FROM rooms
INNER JOIN configurations ON rooms.config_id = configurations.id
INNER JOIN users ON configurations.user_id = users.id
WHERE user_id = 4
ORDER BY config_id
У меня также есть красная документация, но мне все равно не придет в голову, если мне придется сделать более «сложный» запрос, подобный приведенному выше.
Мои попытки выглядят так:
$user_id = Auth::user()->id;
$projects = Room::with('Confuguration')
->whereHas('configs', function($q) use ($user_id){
$q->where('config_id', 'like', $user_id);
})->get();
return view('home', compact('projects'));