我有与公司有关系的公司
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')
答案 0 :(得分:0)
我发现了BelongsToMany类的公共财产支点,可以使用它。
$relation->pivotWheres