条件加入雄辩

时间:2018-01-16 19:02:58

标签: laravel eloquent lumen laravel-eloquent laravel-query-builder

我一直在查看关于堆栈溢出的多个问题,以及在雄辩的文档中,我似乎无法找到如果变量为真,如何加入表。

我有我雄辩的查询。

$test = false;
$orderBy = 'name'; // Default order by
$sortBy = 'asc'; // Default sort by
$wheres[] = ['is_deleted', '=', $is_deleted];

Comm::where($wheres)
      ->select($selects)
      ->join('div', function($join) use($test) {
            if($test) {
                 $join->on('Comm.div_id', '=', 'div.div_id')
            }
        }
      ->orderBy($orderBy, $sortBy)
      ->paginate($per_page, '*', 'page', $page);

现在我知道您可以使用文档连接方法加入,例如

->join('div', 'comm.div_id', '=', 'div.div_id')

反正有没有完成我要做的有条件添加?这是针对api的,我希望用户能够指定他们是否希望返回结果中包含某些表。我还没能找到关于这种功能的帖子。当我使用测试if语句运行我的示例代码时出现错误:

Parse error: syntax error, unexpected '}'

1 个答案:

答案 0 :(得分:0)

经过一段时间的反复试验,我发现你可以使用条件句来帮助加入表格。

$comm = Comm::select($selects)
              ->when($useJoins, function($query) use ($withs) {
                  return $query->with($withs);
              }) 
              ->orderBy($orderBy, $sortBy)
              ->paginate($per_page, '*', 'page', $page);

我将此留在这里供将来参考,因为此类加入的数据不是很多。我也尝试过使用雄辩的连接方法,这些工作我只是把它留在一个数组中用于显示目的。

相关问题