如何使用TypeORM中的find-options API在where对象中使用“ OR”查询

时间:2018-10-15 10:35:42

标签: typeorm

我想在我的仓库中查找名字如'john'的结果 OR 姓氏如'doe' 但是findOptions where子句将其视为AND。

我尝试过的事情:

global $wpdb; 
//$table_name = $wpdb->prefix . "wp_wfu_log"; 
$user = $wpdb->get_results( "SELECT * FROM wp_wfu_log" ); 
echo '<table> <tr> <th>PHOTO</th> <th>test</th> </tr>';

foreach( $user as $user_data) { 

    echo "<tr> <td><img src='{$user_data->filepath}'></td> </tr>"; 
} 

echo '</table>'; 

我对此有何期待:

let results = await userRepo.find({
  where : {
    firstname : Like('%John%'),
    lastname : Like('%Doe%'),
  }
});

关于如何在对象中使用 OR 的任何帮助?

3 个答案:

答案 0 :(得分:2)

可以使用TypeORM docs中所述的简单typeorm .find()选项来使用OR子句。

要使用OR运算符进行查询,您需要使用条件数组代替对象。

    let results = await userRepo.find({
        where: [
            { firstname: Like('%John%') },
            { lastname: Like('%Doe%') }
        ]
    });

答案 1 :(得分:0)

我不认为可以使用简单的typeorm .find()选项编写OR子句:

https://github.com/typeorm/typeorm/blob/master/docs/find-options.md

相反,您必须使用QueryBuilder:

https://github.com/typeorm/typeorm/blob/master/docs/select-query-builder.md#adding-where-expression

这看起来像

let results = await userRepo
  .createQueryBuilder()
  .select()
  .where("firstname LIKE %:first%", { first: John })
  .orWhere("lastname LIKE %:last%", { last: Doe });

答案 2 :(得分:0)

因此,我发现我也可以在TypeORM中的位置添加一个“字符串”查询。

我尝试过这个:

let results = await userRepo.find({
   where : `firstname LIKE '%john%' OR lastname LIKE '%doe%'`
})

在功能发布之前,我必须坚持使用。