【发布时间】:2020-02-17 21:54:16
【问题描述】:
我正在制作一个集合,其中一项任务是让它匹配任何不 = 到 NULL 且不等于“在线”的 Campus.campus_name 的 Campus_id
$onCampusesLocationsHc = $collection->match(['enrollment_type_id' => 1 ])->match(['location_id' => 1 ])->match(['campus_id' => !NULL]);
到目前为止效果很好,但在添加“或不等于'在线'的 Campus.campus_name”时遇到问题。
我已经添加了
->match(['campus.campus_name' => 'Online']);
如果应用第一个条件,它将不起作用。
->match(['campus_id' => !NULL]);
但它会过滤掉除在线类别之外的所有内容。 如果添加此行而不是 !=NULL 存在
我试图反其道而行之,但结果为空。
->match(['campus.campus_name !=' => 'Online']);
它应该返回六个校区。
努力在 Collection Filters 中找到可以让我将两个过滤器应用于一列的内容。
【问题讨论】:
-
首先,让我们从匹配器过滤器仅应用基本相等比较的事实开始,它们不支持运算符或任何东西。另请注意
!NULL与value != NULL不同,前者将简单地计算为布尔值true,并将值与该值进行比较,即value == true。话虽如此,我很难弄清楚你的条件应该是什么样子,因为你首先说你想使用AND,然后你说OR? -
如果你想过滤你的收藏,似乎你可能需要filter功能,它允许你提供一个检查每个项目并返回
true或false的函数,具体取决于是否你想包括它。 -
ndm 是的,我明白你的意思。我首先评估以确保 Campus_id 字段中有一个值。一旦我有了那个列表,我需要从列表中过滤掉“在线”校园。所以是的,它应该首先是“IS NOT NULL”和“IS Not Online”。
-
我会再次查看过滤器,看看它是否适用于这种情况。
标签: cakephp-3.0