我如何从关系中获得完整的查询

时间:2018-08-23 14:30:03

标签: laravel

我有与公司有关系的公司

public function contact()
{
    return $this->belongsToMany(\App\Models\Contact::class, 'company_contacts', 'company_id', 'contact_id')
        ->wherePivot('primary', '=', true)->withPivot('primary');
}

我需要使用contact.last_name列对项目进行排序。

所以我建立查询

$scope = $scope->leftJoin('company_contacts', "companies.id", '=', "company_contacts.company_id")
               ->leftJoin('contacts', "company_contacts.contact_id", '=', "contacts.id")
               ->groupBy(['companies.id', 'contacts.id'])
               ->select(['companies.*', 'contacts.last_name'])
               ->order('contacts.last_name');

但这应该更通用

我可以从$ relation获得的名称和表的值

  $relation = $scope->getRelation('contact');
  $key = $relation->getQualifiedOwnerKeyName(); // etc

然后将值替换为作用域构建器。但我无法得到这一部分::

 ->wherePivot('primary', '=', true)->withPivot('primary')

1 个答案:

答案 0 :(得分:0)

我发现了BelongsToMany类的公共财产支点,可以使用它。

$relation->pivotWheres