Прямо сейчас я немного рассол. Я пытаюсь оптимизировать старый код, используя больше соглашений laravels вместо того, чтобы создавать свои собственные циклы, чтобы получить нужные мне данные.Laravel выбор отношения отношения без использования петли
Так вот что я прямо сейчас:
Регион Модель
class Region extends Eloquent {
public $timestamps = false;
public function vms() {
return $this->hasMany('Vm');
}
}
игры Модель
class Game extends Eloquent {
public $table = 'vm_games';
public function vm() {
return $this->hasOne('Vm');
}
}
Vm Модель
class Vm extends Eloquent {
public function games() {
return $this->hasMany('Game');
}
}
Теперь то, что я хочу в данный момент сделать следующее:
$games = 0;
foreach($region->vms()->where('status', true)->get() as $vm) {
$games += $vm->games()->where('created_at', '>', date('Y-m-d H:i:s', time() - 5400))->count();
}
$sorted[$region->id]->games = $games;
Теперь конечно используя Laravels красноречивый отношения гораздо чище:
$region->vms()->where('status', true)->count();
Теперь то, что я хочу сделать что-то вроде этого:
$games = $region->vms()->where('status', true)->games();
Это не будет работать, очевидно, у меня тоже пытался играть с «с» и «где», но безрезультатно.
Я действительно надеюсь, что вы могли бы мне помочь.
С наилучшими пожеланиями, Ниеком
Если вы хотели бы добавить условное в связи между ними, я не думаю, поэтому вы можете сделать это просто. Laravel поддерживает отношения через (https://laravel.com/docs/5.3/eloquent-relationships#has-many-through), но я не уверен, что вы сможете использовать его в своем примере. – Mishek