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);
});
});
}
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'