我在视图中编写了一个全局 PHP 过滤器,并且我希望在满足条件以及TRUE
应该从我的结果集中消除该行时返回的值为 TRUE。该视图在表格中显示其结果。
我的过滤器代码如下
global $user;
$uid = $user->uid;
$bid = db_query("SELECT entity_id FROM {field_data_field_bid_request_reference} WHERE field_bid_request_reference_line_item_id = '$row->line_item_id'");
foreach($bid as $value) {
$node_uid = db_query("SELECT uid FROM {node} WHERE nid = '$value->entity_id'")->fetchField();
if( $node_uid != $uid) {
return TRUE;
}
}
就 if 语句而言,我得到了我期望的结果。$node_uid
正在返回我想要的,对于使用=uid
创建节点的人来说,从.nid
entity_id
db_query
在我的测试中,我有 12 行,每行都有一个line_item_id
. 有 6 个可能的结果,如果我使用 a查看foreach中的 4 $node_uid
,我会看到它们。在我的测试用例中,我的 uid 为 5,这应该匹配 3 次。我应该在最终结果中只看到 3 行。drupal_set_message
node_id
问题在于,因为匹配 if 语句并应返回而应消除的 9 行TRUE
实际上是显示的行,而应通过 if 语句测试并应显示的 3 行是从输出中删除的行。这几乎就像返回值被反转了一样。
当 if 语句通过时,我所做的就好像返回值不正确。
我本来希望返回的情况node_id
不等于uid
返回TRUE
并且这些行不会出现在我的表中。
任何人都可以就可能出现的问题以及如何调试此过滤器提供任何建议吗?