Php Laravel 5.4-如何找到与

Php Laravel 5.4-如何找到与,php,laravel,Php,Laravel,我有一些能言善辩的模型,名为“客户和公司”。我的客户可能属于多家公司: 我想检查提供的客户是否属于给定的公司。这就是我的结局: $client->companies ->filter( function ($value, $key) use ($company) { return $company->getKey() === $value->getKey(); }

我有一些能言善辩的模型,名为“客户和公司”。我的客户可能属于多家公司:

我想检查提供的客户是否属于给定的公司。这就是我的结局:

$client->companies
        ->filter(
            function ($value, $key) use ($company) {
                return $company->getKey() === $value->getKey();
            }
        )
        ->count() > 0;

有没有更短的方法?

您可以随时使用关系方法查询关系:

$client->companies()->where('company_id', $company->id)->exists();

这将使用查询生成器在数据库级别实际查询关系,与将公司视为从数据库获取所有相关行集合的属性不同。

使用模型和关系集合:

$client->companies->contains($company);
使用关系查询检查是否存在:

$client->companies()->where('company_id', $company->id)->exists();

// even shorter, and don't need to know about the key yourself

$client->companies()->whereKey($company)->exists();
从另一个方向走:

$company->clients->contains($client); // if setup
$company->clients()->where(....)->exists();
试一试

其中comp_id可以是任何列名。这将返回一个数组。然后通过执行以下操作检查阵列是否为空:

if (empty($myArray)) 

您需要加载整个关系吗?您是否需要所有这些公司作为模型,或者这只是一个确定存在的db命中?预期输出是什么?或者您可以检查相关的模型存在$client->companys->exists@VasimVanzara输出应为true或truefalse@VasimVanzara只检查是否存在任何关系,如果某个特定客户属于某个公司,我们就不能忘记,我们可以使用whereKey$company而不是where there吗?@lagbox,是的。从我的测试来看,这是一个关键的工作。你可以更新你的答案来使用它。danke,我只需要为它添加一行。。。我只是想确认一下
$myArray = $client->companies->comp_id;
if (empty($myArray))