Laravel Or有两个条件的地方不太明显

问题描述 投票:0回答:2

为什么在雄辩的情况下进行简单的查询,因为此查询无法正常工作?

$matches = DB::table("matches")
   ->where(["team_a"=> $request->tid, "match_tipo"=>3])
   ->orWhere(["team_a"=> $request->tid, "match_tipo"=>3])
   ->first();

根据Stackoverflow上的其他示例,我应该在类似之处使用查询:

$matches = DB::table("matches")
 ->where(["match_tipo"=>3])
 ->where(function($query, $request) {
      $query->where('team_h',$request->tid)
            ->orWhere('team_a',$request->tid);
      })
->first();

但是我应该传递第二个参数($ request)。

执行此查询的最简单方法是什么?

laravel eloquent laravel-5.8
2个回答
0
投票

您可以这样制作。

[->where(["match_tipo"=>3])这将是->where("match_tipo"=>3),并在查询后使用($ tid)。

$tid = $request->tid; 
$matches = DB::table("matches")
 ->where("match_tipo",3)
 ->where(function($query) use($tid) {
      $query->where('team_h',$tid)
            ->orWhere('team_a',$tid);
      })
->get();

0
投票

使用回调或关闭作为where函数参数时,您只会使用一个参数,即当前对象

可用于传递$ request的方法

$matches = DB::table("matches")
 ->where(["match_tipo"=>3])
 ->where(function($query) use ($request) {
      $query->where('team_h',$request->tid)
            ->orWhere('team_a',$request->tid);
      })
->first();
© www.soinside.com 2019 - 2024. All rights reserved.