3

TRUEビューでグローバル PHP フィルターを作成しました。条件が満たされたとき、および結果セットからその行を削除する必要があるときに、戻り値が 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ます。nidentity_iddb_query

私のテストでは、それぞれにline_item_id. には6つの可能な結果があり$node_uid、aを使用してforeach内のdrupal_set_message4つを見ると、それらが表示されます。node_id私のテストケースでは、uid が 5 で、これは 3 回一致するはずです。最終結果には 3 行しか表示されません。

問題は、if ステートメントに一致して返されるはずの 9 行TRUEが実際に表示される行であり、if ステートメントのテストに失敗して表示されるべき 3 行が出力から削除されることです。これは、戻り値が逆になっているようなものです。

私が何をしても、if ステートメントが渡されたときに戻り値が正しくないかのようです。

node_idto が to と等しくなく、これらの行がテーブルに表示されない場合が予想されuidます。TRUE

何がうまくいかないのか、またこのフィルターをデバッグする方法について、誰か提案を提供できますか?

4

2 に答える 2

1

フィルターにTRUEが表示されている場合、フィルターで除外されます。だから、あなたはおそらく持っているはずです

if ($node_uid == $uid) {
  return TRUE;
}
于 2012-10-04T08:32:42.303 に答える