Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Data Model Questions

DataList filter using OR


Reply

8 Posts   1024 Views

Avatar
Morgan

14 November 2012 at 8:12am Community Member, 5 Posts

I need assistance on how to filter a datalist by where Firstname = 'Sam' or surname = 'paul'. How do you achieve this using the new ORM?

Avatar
Morgan

19 November 2012 at 12:04am Community Member, 5 Posts

Hi All,
To elaborate on my issue

I have a class called students with two fields : Firstname and Surname. I want A datalist of students with either Firstname Samuel or Surname 'Paul'. How do you achieve this with the new ORM?

Avatar
martimiz

19 November 2012 at 1:34am Forum Moderator, 1091 Posts

Hi,
I think you can still use where() as in:

$students = Student::get()->where("Firstname = 'Samuel' OR Surname = 'Samuel'");

Avatar
Morgan

19 November 2012 at 2:44am Community Member, 5 Posts

Thanks martimiz,
It seems like filter method cannot be used to achieve this.

Avatar
martimiz

19 November 2012 at 4:09am (Last edited: 19 November 2012 4:10am), Forum Moderator, 1091 Posts

Maybe you could even:

$students = Student::get()->exclude(array('Firstname:not' => 'Samuel', 'Surname:not' => 'Paul'));

That would be the other way around, wouldn't it? But I've not tested this and also it feels a bit strange and unreadable...

So maybe we just missed something :)

Avatar
kinglozzer

20 November 2012 at 10:07pm Community Member, 146 Posts

$students = Student::get()->filter('Firstname', array('Samuel', 'Paul'));

Avatar
Morgan

20 November 2012 at 11:42pm Community Member, 5 Posts

kinglozzer
I think yours is for a result set for where firstname is either paul or samuel. My question was for where firstname is samuel or surname is paul. I implemented martimiz first ansewer and it was okay.

Avatar
m-phil

2 April 2014 at 8:19pm (Last edited: 2 April 2014 8:30pm), Community Member, 37 Posts

Student::get()->filterAny(array('Firstname' => 'Samuel', 'Firstname' => 'Paul'));
// SQL: WHERE "Firstname" = 'Samuel' OR "Firstname" = 'Paul'

Student::get()->filterAny(array('Firstname' => array('Samuel', 'Paul')));
// SQL: WHERE "Firstname" IN ('Samuel', 'Paul')