使用数据透视表过滤查询

时间:2018-01-03 03:32:40

标签: php laravel laravel-5 laravel-5.5

我只想询问如何使用数据透视表过滤我的查询。这就是我的表格

用户(ID,姓名)

公司(ID,姓名)

users_companies (ID,USER_ID,COM​​PANY_ID)

我真的想知道如何使用数据透视表下拉来过滤我的列表 这就是我的EloquentUser

的方式
   public function paginate($perPage, $search = null, $status = null, $emp_status = null, $level = null, $age = null, $gender = null, $civil_status = null, $role_id = null, $birthmonth = null, $company = null)
    {
    $query = User::query();

    if($company && $company != "" && $company != "All" ) {
            $query->where(function ($q) use ($company) {
                $q->where('id', '=', $company);
            });
        }

这是我的list.blade或我的下拉列表所在的位置

<div class="form-group-sm"> 
                <select class="form-control form-control-sm" id="company" name="company">
                    <option selected  disabled>Company</option>
                    @foreach ($companies as $company)
                        @if (($company->id)=="1")
                        <option>All</option>
                        @else
                        <option value="{{ $company->id }}">{{ $company->name }}</option>
                        @endif
                    @endforeach
                </select>
            </div>

非常感谢专家!!!

2 个答案:

答案 0 :(得分:1)

您可以使用whereHas方法获取用户,这是示例

$selected_company_id = $company; //this is form input, company which you selected

$users = User::whereHas('companies', function ($query) use($selected_company_id) {
    $query->where('company_id', $selected_company_id);
})->get();

答案 1 :(得分:0)

这就是我尝试过并且有效的方法

$query = User::whereHas('benefits', function ($q) use($benefit) {
            $q->where('benefit_id','=', $benefit);
        });