Yerel kapsamlardan Eloquent'te Çoklu Birleştirme
Aug 16 2020
Eloquent ve kapsam işlevselliği ile ilgili bir sorunuz var:
İki kapsam varsayarsak:
class Result extends Model {
public function scopeIsRace($query) { return $query
->join('sessions', 'sessions.id', '=', 'results.session_id')
->where('sessions.type', 10)
}
public function scopeIsOfficial($query) { return $query
->join('sessions', 'sessions.id', '=', 'results.session_id')
->join('events', 'events.id', '=', 'sessions.event_id')
->where('events.regular_event', 1);
}
}
Her ikisini de çağırmak, iki oturum birleştirme gerçekleştirir ve sonuçta ortaya çıkan sorgu böyle görünür (çalışmıyor)
select * from `results` inner join `sessions` on `sessions`.`id` = `results`.`session_id` inner join `sessions` on `sessions`.`id` = `results`.`session_id` inner join `events` on `events`.`id` = `sessions`.`event_id` where `driver_id` = 24 and (`sessions`.`type` = 10 or `sessions`.`type` = 11) and `events`.`regular_event` = 1
Oturumlarda çift katılımı nasıl engellerim?
Yanıtlar
1 Siggi Aug 16 2020 at 15:51
Çok teşekkür ederim @ Nima. Gelişmiş bir yeri tamamen unutun. Bunu önerdiğiniz sorudan bir yapı kullandık ve mükemmel bir şekilde çalışıyor:
public function scopeIsRace($query) { return $query->whereHas('session', function($query){ $query->where('type', 10);
});
}
public function scopeIsOfficial($query) { return $query->whereHas('session', function($query) { return $query->whereHas('event', function($query2) { $query2->where('regular_event', 1);
});
});
}
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'