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?
We've moved the forum!
Please use forum.silverstripe.org for any new questions
(announcement).
The forum archive will stick around, but will be read only.
You can also use our Slack channel
or StackOverflow to ask for help.
Check out our community overview for more options to contribute.
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?
Hi,
I think you can still use where() as in:
$students = Student::get()->where("Firstname = 'Samuel' OR Surname = 'Samuel'");
Thanks martimiz,
It seems like filter method cannot be used to achieve this.
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 :)
$students = Student::get()->filter('Firstname', array('Samuel', 'Paul'));
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.
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')