Speed up eager loading of many to many.
This commit is contained in:
parent
0493431597
commit
14e9488cf9
|
@ -325,14 +325,21 @@ public function match($relationship, &$parents, $children)
|
|||
{
|
||||
$foreign = $this->foreign_key();
|
||||
|
||||
$dictionary = array();
|
||||
|
||||
foreach ($children as $child)
|
||||
{
|
||||
$dictionary[$child->pivot->$foreign][] = $child;
|
||||
}
|
||||
|
||||
foreach ($parents as &$parent)
|
||||
{
|
||||
$matching = array_filter($children, function($v) use (&$parent, $foreign)
|
||||
{
|
||||
return $v->pivot->$foreign == $parent->get_key();
|
||||
});
|
||||
$parent_key = $parent->get_key();
|
||||
|
||||
$parent->relationships[$relationship] = array_values($matching);
|
||||
if (isset($dictionary[$parent_key]))
|
||||
{
|
||||
$parent->relationships[$relationship] = $dictionary[$parent_key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue