首页 > 解决方案 > 如何在laravel中搜索hasMany关系

问题描述

我有公司和药房的模型

<?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();

标签: laraveleloquent

解决方案


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

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

推荐阅读