web-dev-qa-db-ja.com

dbAPIにリバースIN句を追加します

hook_views_pre_executeの実装中に、[〜#〜] in [〜#〜]句を追加する必要があります

しかし、それは次の行のように追加された通常の[〜#〜] in [〜#〜]ではありません

{table1} .col1 IN(val1、val2)

$query->condition('author', array($user->uid), 'IN');

リバースを追加したかった

{val} IN({table1} .col1、{table2} .col2)

$query->condition($user->uid, array(pm_message.author, pm_index.recipient), 'IN');

ただし、クエリはフィールドを列名ではなく値として受け取ります

Drupalに追加することは可能ですか?

単に、ユーザーが作成者または受信者であるメッセージを取得する必要があります privatemsg

2
Mohammed Gomma

これは(おそらく)非標準なので、whereが必要になります。

例えば、

$query = db_select('foo');
$query->where(':val IN ({table1}.col1, {table2}.col2)', array(':val' => $user->uid));

あなたを取得します

SELECT 
FROM 
{foo} foo
WHERE  (:val IN ({table1}.col1, {table2}.col2)) 

:val と取り換える $user->uid)。

4
Clive