Я прочитал this сообщение, которое помогло, но вам нужно больше руководства, пожалуйста.Laravel 5.3 eloquent 3 соединение таблицы с использованием моделей
Мне нужен набор результатов для конкретного $batteryid
(на результат) и конкретный $age
(на тестовой модели) и конкретный $gender
(от спортсмена). Каждый тест принадлежит одному спортсмену. Каждый тест имеет много результатов.
Модель батареи:
class Battery extends Model{
public function results(){
return $this->hasMany('App\Result');
}
}
Модель Результат:
class Result extends Model{
public function test(){
return $this->belongsTo('App\Test', 'test_id');
}
public function battery(){
return $this->belongsTo('App\Battery', 'battery_id');
}
}
тест Модель:
class Test extends Model{
public function athlete(){
return $this->belongsTo('App\Athlete', 'athlete_id');
}
public function results(){
return $this->hasMany('App\Result');
}
}
я получить правильные результаты с следующий, но это два запроса:
$tests = Test::whereHas('Athlete', function($query) use($gender){
$query->wheregender($gender);
})->where('age', $age)->get();
$test_ids = $tests->pluck('id');
$results = Result::where('battery_id', '=', $battery)
->whereIn('test_id', $test_ids)
->get();
Я бы хотел использовать модельный подход, но я полностью застрял. test.age
не признан и не уверен, как получить возраст от модели спортсмена. Моя попытка:
$results = Result::with('test')
->where('test.age', '=', $age)
->join('batteries', 'batteries.id', '=', 'test.battery_id')
//->where('test->athlete().gender', '=' $gender)
->where('battery_id', '=', $battery)
->get();
Он работал до того, как вы добавили пол. Теперь я тестирую другой синтаксис, возможно, должен выйти второй $ q->? – louisav
Стоит ли таблица вашего атлета получить гендерный столбец? – geckob
Если вы используете переменную gender, вам необходимо включить ее в закрытие функции. – geckob