/**
* Get queries to fetch relationships.
*
* @param Builder $builder
* @param array $models
* @param string $name
* @param Closure $constraints
* @return array
*/
protected function getQueries(Builder $builder, array $models, $name, Closure $constraints)
{
return collect($models)->map(function ($model) use($builder, $name, $constraints) {
$relation = $builder->getRelation($name);
$relation->addEagerConstraints([$model]);
call_user_func_array($constraints, [$relation, $model]);
if (method_exists($relation, 'getSelectColumns')) {
$r = new ReflectionMethod(get_class($relation), 'getSelectColumns');
$r->setAccessible(true);
$select = $r->invoke($relation, ['*']);
$relation->addSelect($select);
}
$relation->initRelation([$model], $name);
return $relation;
});
}