如何在Laravel中搜索hasMany关系

时间:2018-08-30 03:28:18

标签: laravel eloquent

我有公司和药房的模型

<?php 
// Company.php

public function dispensary() 
{
   return $this->hasMany(Dispensary::class);
}

// Dispensary.php
public function company()
{
    return $this->belongsTo(Company::class);
}

我首先要获得用户所属公司的药房。

$auth = \Auth::user();
$userCompany = $auth->company()->get();

$dispensaries = Company::find($userCompany->first()->id)->dispensary;

我应该如何构造一个查询,以便用户可以搜索用户所属的药房列表。

我尝试使用whereHas,但它是从公司而不是药房搜索的

Company::find($userCompany->first()->id)
    ->whereHas('dispensary', function ($query) use ($name) {
       $query->where('name', 'like', "%{$name}%");
})->get();

1 个答案:

答案 0 :(得分:0)

好吧,我终于通过使用where子句使它工作了

$company = Company::find($id)->dispensary()
        ->where('name', 'like', "%{$name}%")
        ->where('contact_email', 'like', "%{$email}%")
        ->get();