[Dbix-class] Fetching distinct data

Dmitry Belyavsky beldmit at gmail.com
Mon Jul 1 20:03:00 GMT 2013


R3JlZXRpbmdzIQoKWWVzLCBJIHVuZGVyc3RhbmQgdGhpcyBzb2x1dGlvbi4gU28gdGhlcmUgaXMg
bm8gc29sdXRpb24gSSB3YW50LgoKVGhhbmsgeW91IQoKCk9uIE1vbiwgSnVsIDEsIDIwMTMgYXQg
MTE6MTggUE0sIFJvYiBLaW55b24gPHJvYi5raW55b25AZ21haWwuY29tPiB3cm90ZToKCj4gSSd2
ZSBiZWVuIHRvbGQgSSBzaG91bGQgZWxhYm9yYXRlLgo+Cj4gZGlzdGluY3Q9PjEgZG9lc24ndCBy
ZXF1aXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIHNlbGVjdGVkIGNvbHVtbnMgaW4gb3JkZXIKPiB0
byB3b3JrLiAiZGlzdGluY3Q9PjEiIChtb2R1bG8gYSBmZXcgbml0cykgaXMgcmVhbGx5IHN1Z2Fy
IGZvciAiZ3JvdXBfYnkKPiBvdmVyIGFsbCBzZWxlY3RlZCBjb2x1bW5zIi4KPgo+IFRoZSBrZXkg
aGVyZSBpcyB0aGF0IHlvdSBvZnRlbiBkb24ndCByZWFsaXplIHlvdSdyZSBub3QgZ2V0dGluZyBh
cwo+IGRpc3RpbmN0IGFzIHlvdSByZWFsbHkgd2FudC4gQW4gZXhhbXBsZSBtYXkgaGVscC4KPgo+
IExldCdzIHNheSB5b3UgaGF2ZSB0d28gdGFibGVzIC0gb3JkZXJzIGFuZCBvcmRlcl9saW5laXRl
bXMgd2l0aCB0aGUKPiBvYnZpb3VzIDE6TiByZWxhdGlvbnNoaXAuIFlvdSdyZSBiZWluZyBhc2tl
ZCB0byBnZXQgYSBsaXN0IG9mIGFsbCBjaXRpZXMKPiBhbmQgc3RhdGVzIHRoYXQgaGF2ZSBhbiBv
cmRlciBjb250YWluaW5nIGFuIGl0ZW0gdGhhdCdzIGRhbmdlcm91cyB0byBzaGlwLgo+ICJEYW5n
ZXJvdXMgdG8gc2hpcCIgaXMgb25lIG9mIHRocmVlIHR5cGVzLiBTbywgdGhlIFNRTCB3b3VsZCBi
ZToKPgo+IFNFTEVDVCBvcmRlcnMuY2l0eSwgb3JkZXJzLnN0YXRlCj4gRlJPTSBvcmRlcnMKPiBK
T0lOIGxpbmVpdGVtcyBPTiAob3JkZXJzLmlkID0gbGluZWl0ZW1zLm9yZGVyX2lkKQo+IFdIRVJF
IGxpbmVpdGVtcy50eXBlIElOICgxLCAzLCA5KQo+IEdST1VQIEJZIG9yZGVycy5jaXR5LCBvcmRl
cnMuc3RhdGUKPgo+IFRoZSBuYWl2ZSBzb2x1dGlvbiBpbiBEQklDIHdvdWxkIGJlOgo+Cj4gJHNj
aGVtYS0+cmVzdWx0c2V0KCdvcmRlcnMnKS0+c2VhcmNoKHsKPiAgICAgJ2xpbmVpdGVtcy50eXBl
JyA9PiBbIDEsIDMsIDkgXSwKPiB9LCB7Cj4gICAgIGpvaW4gPT4gJ2xpbmVpdGVtcycsCj4gICAg
IGRpc3RpbmN0ID0+IDEsCj4gfSk7Cj4KPiBBbmQgdGhhdCB3aWxsIGdpdmUgeW91IGEgcmVzdWx0
c2V0IHdpdGggRVZFUlkgb3JkZXIgdGhhdCBoYXMgYSBsaW5laXRlbQo+IHdpdGggdGhvc2UgaXRl
bXMuIEV2ZW4gd2hlbiB5b3UgZGlkIGRpc3RpbmN0PT4xLiBUaGUgU1FMIHlvdSdsbCBnZXQgd2ls
bAo+IGxvb2sgc29tZXRoaW5nIGxpa2U6Cj4KPiBTRUxFQ1QgbWUuaWQsIG1lLmRhdGUsIG1lLmNp
dHksIG1lLnN0YXRlLCBtZS56aXAsIG1lLmFtb3VudCwgLi4uCj4gRlJPTSBvcmRlcnMgbWUKPiBK
T0lOIGxpbmVpdGVtcyBPTiAob3JkZXJzLmlkID0gbGluZWl0ZW1zLm9yZGVyX2lkKQo+IFdIRVJF
IGxpbmVpdGVtcy50eXBlIElOICgxLCAzLCA5KQo+IEdST1VQIEJZIG1lLmlkLCBtZS5kYXRlLCBt
ZS5jaXR5LCBtZS5zdGF0ZSwgbWUuemlwLCBtZS5hbW91bnQsIC4uLgo+Cj4gQWRkaW5nIHRoZSAi
c2VsZWN0ID0+IFsgJ21lLmNpdHknLCAnbWUuc3RhdGUnIF0iIGNoYW5nZXMgdGhlIFNFTEVDVAo+
IGNsYXVzZSwgd2hpY2ggdGhlbiBjaGFuZ2VzIHRoZSBHUk9VUCBCWSBjbGF1c2UsIGdpdmluZyB5
b3Ugd2hhdCB5b3Ugd2FudCwKPiBhcyBzbzoKPiAkc2NoZW1hLT5yZXN1bHRzZXQoJ29yZGVycycp
LT5zZWFyY2goewo+ICAgICAnbGluZWl0ZW1zLnR5cGUnID0+IFsgMSwgMywgOSBdLAo+IH0sIHsK
PiAgICAgam9pbiA9PiAnbGluZWl0ZW1zJywKPiAgICAgJ3NlbGVjdCcgPT4gWyAnbWUuY2l0eScs
ICdtZS5zdGF0ZScgXSwKPiAgICAgZGlzdGluY3QgPT4gMSwKPiB9KTsKPgo+Cj4gQWx0ZXJuYXRl
bHksIHlvdSBjb3VsZCBkbzoKPiAkc2NoZW1hLT5yZXN1bHRzZXQoJ29yZGVycycpLT5zZWFyY2go
ewo+ICAgICAnbGluZWl0ZW1zLnR5cGUnID0+IFsgMSwgMywgOSBdLAo+IH0sIHsKPiAgICAgam9p
biA9PiAnbGluZWl0ZW1zJywKPiAgICAgZ3JvdXBfYnkgPT4gWyAnbWUuY2l0eScsICdtZS5zdGF0
ZScgXSwKPiB9KTsKPgo+IFRoaXMgaXMgbGVzcyBkZXNpcmFibGUgZnJvbSBib3RoIGEgU1FMIGV4
ZWN1dGlvbiBwZXJzcGVjdGl2ZSAod2hpY2ggcm93cwo+IGRvZXMgdGhlIGVuZ2luZSBwaWNrIGFu
ZCB3aHk/KSBhbmQgUGVybCBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSAod2hhdCBpZgo+IHRoZXJl
IGFyZSBzZXZlcmFsIGxhcmdlIGNvbHVtbnM/KS4gQWxzbywgaXQgb2JmdXNjYXRlcyB0aGUgZGV2
ZWxvcGVyIGludGVudAo+IC0gdGhlIHJvd3MgY291bGQgYmUgdXNlZCBmb3Igc29tZSBvdGhlciBw
dXJwb3NlIHdoaWNoIGNvdWxkIGNhdXNlCj4gaGVpc2VuYnVncy4gTXVjaCBiZXR0ZXIgdG8gd3Jp
dGUgaXQgd2l0aCB0aGUgc2VsZWN0IGNvbHVtbnMgY2xlYXJseQo+IHNwZWNpZmllZC4gVGhhdCB3
YXksIERCSUMgZG9lc24ndCBmaWxsIHRoZSBvdGhlciBhdHRyaWJ1dGVzLgo+Cj4gUm9iCj4KPgo+
Cj4gT24gTW9uLCBKdWwgMSwgMjAxMyBhdCA4OjU3IEFNLCBSb2IgS2lueW9uIDxyb2Iua2lueW9u
QGdtYWlsLmNvbT4gd3JvdGU6Cj4KPj4gRm9yIHRoaXMgdG8gd29yaywgeW91J2QgbmVlZCB0byBz
cGVjaWZ5IHdoaWNoIGNvbHVtbnMgeW91J3JlIHJldHVybmluZy4KPj4gU28sIHNvbWV0aGluZyBs
aWtlOgo+Pgo+PiAkc2NoZW1hLT5yZXN1bHRzZXQoJ0ZpcnN0JyktPnNlYXJjaCh7Cj4+ICAgICAn
c2Vjb25kLmF0dHInID0+IHsgLWluID0+IFsgMSwgMiwgMyBdIH0sCj4+IH0sIHsKPj4gICAgIGpv
aW4gPT4gJ3NlY29uZCcsCj4+ICAgICBzZWxlY3QgPT4gWyAnbWUuaWQnLCAnbWUuYXR0cjEnLCAn
bWUuYXR0cjInIF0sCj4+ICAgICBkaXN0aW5jdCA9PiAxLAo+PiB9KTsKPj4KPj4gTm90ZTogdGhp
cyBtZWFucyB5b3Ugd29uJ3QgYmUgYWJsZSB0byBkbyAkcm93LT5hdHRyMyBsaWtlIHlvdSdkIG5v
cm1hbGx5Cj4+IGJlIGFibGUgdG8uIEJlY2F1c2UsIHdlbGwsIHlvdSBkaWRuJ3QgZ2V0IGl0IGJh
Y2suIDopCj4+Cj4+Cj4+IE9uIE1vbiwgSnVsIDEsIDIwMTMgYXQgODo1MCBBTSwgQmlsbCBNb3Nl
bGV5IDxtb3NlbGV5QGhhbmsub3JnPiB3cm90ZToKPj4KPj4+Cj4+Pgo+Pj4gT24gTW9uLCBKdWwg
MSwgMjAxMyBhdCA2OjU3IEFNLCBEbWl0cnkgQmVseWF2c2t5IDxiZWxkbWl0QGdtYWlsLmNvbT53
cm90ZToKPj4+Cj4+Pj4gR3JlYXRpbmchCj4+Pj4KPj4+PiBJIGhhdmUgMiB0YWJsZXMgaGF2aW5n
IG9uZS10by1tYW55IHJlbGF0aW9uLgo+Pj4+Cj4+Pj4gSSB3YW50IHRvIGdldCBhbGwgZGF0YSBm
cm9tIHRoZSAxc3QgdGFibGUgZmlsdGVyZWQgYnkgYW4gYXR0ciBmcm9tIHRoZQo+Pj4+IDJuZCBv
bmUuCj4+Pj4KPj4+PiBTbyBJIHdyaXRlCj4+Pj4KPj4+PiAkc2NoZW1hLT5yZXN1bHRzZXQoIkZp
cnN0IiktPnNlYXJjaCh7c2Vjb25kcy5hdHRyID0+IHstaW4gPT4gWzEsMiwzXX19LAo+Pj4+IHtq
b2luID0+IHNlY29uZH0gKTsKPj4+Pgo+Pj4+IFRoZSByZXN1bHRpbmcgcXVldWUgZG9lcyBub3Qg
Y29udGFpbiB0aGUgRElTVElOQ1Qga2V5d29yZCBzbyBJIGdldCBtdWNoCj4+Pj4gbW9yZSByZWNv
cmRzIGluIHRoZSByZXN1bHRzZXQgdGhhbiBJIHdhbnQuCj4+Pj4KPj4+PiBTbyBob3cgY2FuIEkg
ZW5mb3JjZSB0aGUgREJJeDo6Q2xhc3MgdG8gd3JpdGUgYSBxdWVyeSBsaWtlCj4+Pj4KPj4+PiBT
ZWxlY3QgZGlzdGluY3QgbWUuaWQsIG1lLmF0dHIxLCBtZS5hdHRyMgo+Pj4+IGZyb20gZmlyc3Qg
bWUKPj4+PiBsZWZ0IGpvaW4gc2Vjb25kIE9OIG1lLmlkPXNlY29uZC5maXJzdF9pZAo+Pj4+IHdo
ZXJlIHNlY29uZC5hdHRyIG5vdCBpbiAoMSwyLDMpCj4+Pj4KPj4+Cj4+PiBJcyB0aGlzIHdoYXQg
eW91IGFyZSBhZnRlcj8KPj4+Cj4+Pgo+Pj4gaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+cmliYXN1
c2hpL0RCSXgtQ2xhc3MtMC4wODI1MC9saWIvREJJeC9DbGFzcy9SZXN1bHRTZXQucG0jZGlzdGlu
Y3QKPj4+Cj4+Pgo+Pj4KPj4+IC0tCj4+PiBCaWxsIE1vc2VsZXkKPj4+IG1vc2VsZXlAaGFuay5v
cmcKPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+
PiBMaXN0OiBodHRwOi8vbGlzdHMuc2NzeXMuY28udWsvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L2RiaXgtY2xhc3MKPj4+IElSQzogaXJjLnBlcmwub3JnI2RiaXgtY2xhc3MKPj4+IFNWTjogaHR0
cDovL2Rldi5jYXRhbHlzdC5wZXJsLm9yZy9yZXBvcy9iYXN0L0RCSXgtQ2xhc3MvCj4+PiBTZWFy
Y2hhYmxlIEFyY2hpdmU6Cj4+PiBodHRwOi8vd3d3Lmdyb2tiYXNlLmNvbS9ncm91cC9kYml4LWNs
YXNzQGxpc3RzLnNjc3lzLmNvLnVrCj4+Pgo+Pgo+Pgo+Pgo+PiAtLQo+PiBUaGFua3MsCj4+IFJv
YiBLaW55b24KPj4KPgo+Cj4KPiAtLQo+IFRoYW5rcywKPiBSb2IgS2lueW9uCj4KPiBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IExpc3Q6IGh0dHA6Ly9s
aXN0cy5zY3N5cy5jby51ay9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vZGJpeC1jbGFzcwo+IElS
QzogaXJjLnBlcmwub3JnI2RiaXgtY2xhc3MKPiBTVk46IGh0dHA6Ly9kZXYuY2F0YWx5c3QucGVy
bC5vcmcvcmVwb3MvYmFzdC9EQkl4LUNsYXNzLwo+IFNlYXJjaGFibGUgQXJjaGl2ZToKPiBodHRw
Oi8vd3d3Lmdyb2tiYXNlLmNvbS9ncm91cC9kYml4LWNsYXNzQGxpc3RzLnNjc3lzLmNvLnVrCj4K
CgoKLS0gClNZLCBEbWl0cnkgQmVseWF2c2t5Ci0tLS0tLS0tLS0tLS0tIG5leHQgcGFydCAtLS0t
LS0tLS0tLS0tLQpBbiBIVE1MIGF0dGFjaG1lbnQgd2FzIHNjcnViYmVkLi4uClVSTDogaHR0cDov
L2xpc3RzLnNjc3lzLmNvLnVrL3BpcGVybWFpbC9kYml4LWNsYXNzL2F0dGFjaG1lbnRzLzIwMTMw
NzAyLzdhMGNhYjdkL2F0dGFjaG1lbnQuaHRtCg==


More information about the DBIx-Class mailing list