【问题标题】:Laravel 5 Eloquent where and orwhereLaravel 5 Eloquent where and orwhere
【发布时间】:2017-03-27 10:04:34
【问题描述】:

我尝试从包含多个 where 和/或子句的表中获取结果。但是我没有收到好的结果!

$queries = journal::where(function($query)
{
$term =Input::get('text');
$query->where('titre', 'like', '%'.$term.'%')
    ->where('etat','!=','9')
    ->where('type', 0)
    ->orWhere('type', 1);
})->take(10)->get();    

【问题讨论】:

  • 你能澄清什么是失败的吗?我确实注意到您使用 $text 变量而不是 $term。
  • 您没有在查询中使用“$term”变量。是故意的吗?
  • 我没有收到好结果!
  • 抱歉错字!
  • 你还是没有得到好结果?

标签: php mysql laravel-5 eloquent query-builder


【解决方案1】:

您应该像这样进行查询:

$query->where('titre', 'like', '%'.$term.'%')
    ->where('etat','!=','9')
    ->where(function ($query) {
            $query->where('type', 0)
                  ->orWhere('type', 1);
        })

如果你需要使用 orWhere 否则使用 whereBetween。 Reference Here

【讨论】:

  • +1 用于实际回答所提出的问题。回答所提出的问题对搜索特定事物的人很有帮助。
【解决方案2】:

您可以使用相同的查询与动态值通过以下方式进行比较:

$valSearch='abcd';
$query->where('field1', 'like', '%'.$val1.'%')
    ->where('field2','!=','2')
    ->where(function ($query) use ($valSearch) {
            $query->where('field3', $valSearch)
                  ->orWhere('field4', $valSearch);
        })

查询将执行为:

field1 like '%{$val1}% AND field2 != 2 AND (field3='abcd' OR field4='abcd')

它可能对某些人有帮助以供以后使用。 Reference Here

【讨论】:

    【解决方案3】:

    请改用whereBetween()

    $queries = journal::where(function($query)
    {
        $term =Input::get('text');
        $query->where('titre', 'like', '%'.$text.'%')
            ->where('etat','!=','9')
            ->whereBetween('type', [0, 1]);
    })->take(10)->get(); 
    

    https://laravel.com/docs/5.4/queries - 附加 Where 子句

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2021-07-12
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      相关资源
      最近更新 更多