PageSourceSearch

https://hypervel.org/assets/eloquent-collections.html-BRKV5Qzj.js

js hypervel.org collected 2026-10-04 19:22:27 UTC 35,581 bytes, 66 lines download raw bytes

1import{_ as o,c as l,a as n,b as a,w as e,d as p,r as i,o as c,e as t}from"./app-ChViQP5P.js";const r={},u=n("h1",{id:"eloquent-collections",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#eloquent-collections"},[n("span",null,"Eloquent: Collections")])],-1),d={class:"table-of-contents"},h=p(`<h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction"><span>Introduction</span></a></h2><p>All Eloquent methods that return more than one model result will return instances of the <code>Hypervel\\Database\\Eloquent</code> class, including results retrieved via the <code>get</code> method or accessed via a relationship. The Eloquent collection object extends Hypervel&#39;s <a href="/docs/collections">base collection</a>, so it naturally inherits dozens of methods used to fluently work with the underlying array of Eloquent models. Be sure to review the Hypervel collection documentation to learn all about these helpful methods!</p><p>All collections also serve as iterators, allowing you to loop over them as if they were simple PHP arrays:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token keyword">
1use</span> <span class="token package">App<span class="token punctuation">\\</span>Models<span class="token punctuation">\\</span>User</span><span class="token punctuation">;</span></span>
2<span class="line"></span>
3<span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">where</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;active&#39;</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
4<span class="line"></span>
5<span class="line"><span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$users</span> <span class="token keyword">as</span> <span class="token variable">$user</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
6<span class="line">    <span class="token keyword">echo</span> <span class="token variable">$user</span><span class="token operator">-&gt;</span><span class="token property">name</span><span class="token punctuation">;</span></span>
7<span class="line"><span class="token punctuation">}</span></span>
8<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>However, as previously mentioned, collections are much more powerful than arrays and expose a variety of map / reduce operations that may be chained using an intuitive interface. For example, we may remove all inactive models and then gather the first name for each remaining user:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$names</span> <span class="token operator">=</span> <span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">all</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">reject</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$user</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
9<span class="line">    <span class="token keyword">return</span> <span class="token variable">$user</span><span class="token operator">-&gt;</span><span class="token property">active</span> <span class="token operator">===</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span></span>
10<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$user</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></span>
11<span class="line">    <span class="token keyword">return</span> <span class="token variable">$user</span><span class="token operator">-&gt;</span><span class="token property">name</span><span class="token punctuation">;</span></span>
12<span class="line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
13<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="eloquent-collection-conversion" tabindex="-1"><a class="header-anchor" href="#eloquent-collection-conversion"><span>Eloquent Collection Conversion</span></a></h4><p>While most Eloquent collection methods return a new instance of an Eloquent collection, the <code>collapse</code>, <code>flatten</code>, <code>flip</code>, <code>keys</code>, <code>pluck</code>, and <code>zip</code> methods return a <a href="/docs/collections">base collection</a> instance. Likewise, if a <code>map</code> operation returns a collection that does not contain any Eloquent models, it will be converted to a base collection instance.</p><h2 id="available-methods" tabindex="-1"><a class="header-anchor" href="#available-methods"><span>Available Methods</span></a></h2><p>All Eloquent collections extend the base <a href="/docs/collections#available-methods">Hypervel collection</a> object; therefore, they inherit all of the powerful methods provided by the base collection class.</p><p>In addition, the <code>Hypervel\\Database\\Eloquent</code> class provides a superset of methods to aid with managing your model collections. Most methods return <code>Hypervel\\Database\\Eloquent</code> instances; however, some methods, like <code>modelKeys</code>, return an <code>Hypervel\\Support\\Collection</code> instance.</p>`,11),k=n("div",{id:"collection-method-list",markdown:"1"},[n("p",null,[n("a",{href:"#method-contains"},"contains"),n("a",{href:"#method-diff"},"diff"),n("a",{href:"#method-except"},"except"),n("a",{href:"#method-find"},"find"),n("a",{href:"#method-fresh"},"fresh"),n("a",{href:"#method-intersect"},"intersect"),n("a",{href:"#method-load"},"load"),n("a",{href:"#method-loadMissing"},"loadMissing"),n("a",{href:"#method-modelKeys"},"modelKeys"),n("a",{href:"#method-makeVisible"},"makeVisible"),n("a",{href:"#method-makeHidden"},"makeHidden"),n("a",{href:"#method-only"},"only"),n("a",{href:"#method-toquery"},"toQuery"),n("a",{href:"#method-unique"},"unique")])],-1),m=p(`<p><a name="method-contains"></a></p><h4 id="contains-key-operator-null-value-null" tabindex="-1"><a class="header-anchor" href="#contains-key-operator-null-value-null"><span>contains($key, $operator = null, $value = null)</span></a></h4><p>The <code>contains</code> method may be used to determine if a given model instance is contained by the collection. This method accepts a primary key or a model instance:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">contains</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
14<span class="line"></span>
15<span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">contains</span><span class="token punctuation">(</span><span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
16<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-diff"></a></p><h4 id="diff-items" tabindex="-1"><a class="header-anchor" href="#diff-items"><span>diff($items)</span></a></h4><p>The <code>diff</code> method returns all of the models that are not present in the given collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token keyword">
16use</span> <span class="token package">App<span class="token punctuation">\\</span>Models<span class="token punctuation">\\</span>User</span><span class="token punctuation">;</span></span>
17<span class="line"></span>
18<span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">diff</span><span class="token punctuation">(</span><span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">whereIn</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;id&#39;</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
19<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-except"></a></p><h4 id="except-keys" tabindex="-1"><a class="header-anchor" href="#except-keys"><span>except($keys)</span></a></h4><p>The <code>except</code> method returns all of the models that do not have the given primary keys:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">except</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
20<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><a name="method-find"></a></p><h4 id="find-key" tabindex="-1"><a class="header-anchor" href="#find-key"><span>find($key)</span></a></h4><p>The <code>find</code> method returns the model that has a primary key matching the given key. If <code>$key</code> is a model instance, <code>find</code> will attempt to return a model matching the primary key. If <code>$key</code> is an array of keys, <code>find</code> will return all models which have a primary key in the given array:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">all</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
21<span class="line"></span>
22<span class="line"><span class="token variable">$user</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
23<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-fresh"></a></p><h4 id="fresh-with" tabindex="-1"><a class="header-anchor" href="#fresh-with"><span>fresh($with = [])</span></a></h4><p>The <code>fresh</code> method retrieves a fresh instance of each model in the collection from the database. In addition, any specified relationships will be eager loaded:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">fresh</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
24<span class="line"></span>
25<span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">fresh</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;comments&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
26<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-intersect"></a></p><h4 id="intersect-items" tabindex="-1"><a class="header-anchor" href="#intersect-items"><span>intersect($items)</span></a></h4><p>The <code>intersect</code> method returns all of the models that are also present in the given collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token keyword">
26use</span> <span class="token package">App<span class="token punctuation">\\</span>Models<span class="token punctuation">\\</span>User</span><span class="token punctuation">;</span></span>
27<span class="line"></span>
28<span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">intersect</span><span class="token punctuation">(</span><span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">whereIn</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;id&#39;</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
29<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-load"></a></p><h4 id="load-relations" tabindex="-1"><a class="header-anchor" href="#load-relations"><span>load($relations)</span></a></h4><p>The <code>load</code> method eager loads the given relationships for all models in the collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">&#39;comments&#39;</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;posts&#39;</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
30<span class="line"></span>
31<span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;comments.author&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
32<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-loadMissing"></a></p><h4 id="loadmissing-relations" tabindex="-1"><a class="header-anchor" href="#loadmissing-relations"><span>loadMissing($relations)</span></a></h4><p>The <code>loadMissing</code> method eager loads the given relationships for all models in the collection if the relationships are not already loaded:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">loadMissing</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">&#39;comments&#39;</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;posts&#39;</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
33<span class="line"></span>
34<span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">loadMissing</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;comments.author&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
35<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-modelKeys"></a></p><h4 id="modelkeys" tabindex="-1"><a class="header-anchor" href="#modelkeys"><span>modelKeys()</span></a></h4><p>The <code>modelKeys</code> method returns the primary keys for all models in the collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">modelKeys</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
36<span class="line"></span>
37<span class="line"><span class="token comment">// [1, 2, 3, 4, 5]</span></span>
38<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-makeVisible"></a></p><h4 id="makevisible-attributes" tabindex="-1"><a class="header-anchor" href="#makevisible-attributes"><span>makeVisible($attributes)</span></a></h4><p>The <code>makeVisible</code> method <a href="/docs/eloquent-serialization#hiding-attributes-from-json">makes attributes visible</a> that are typically &quot;hidden&quot; on each model in the collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">makeVisible</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">&#39;address&#39;</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;phone_number&#39;</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
39<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><a name="method-makeHidden"></a></p><h4 id="makehidden-attributes" tabindex="-1"><a class="header-anchor" href="#makehidden-attributes"><span>makeHidden($attributes)</span></a></h4><p>The <code>makeHidden</code> method <a href="/docs/eloquent-serialization#hiding-attributes-from-json">hides attributes</a> that are typically &quot;visible&quot; on each model in the collection:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">makeHidden</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">&#39;address&#39;</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;phone_number&#39;</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
40<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><a name="method-only"></a></p><h4 id="only-keys" tabindex="-1"><a class="header-anchor" href="#only-keys"><span>only($keys)</span></a></h4><p>The <code>only</code> method returns all of the models that have the given primary keys:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">only</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
41<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><a name="method-toquery"></a></p><h4 id="toquery" tabindex="-1"><a class="header-anchor" href="#toquery"><span>toQuery()</span></a></h4><p>The <code>toQuery</code> method returns an Eloquent query builder instance containing a <code>whereIn</code> constraint on the collection model&#39;s primary keys:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token keyword">
41use</span> <span class="token package">App<span class="token punctuation">\\</span>Models<span class="token punctuation">\\</span>User</span><span class="token punctuation">;</span></span>
42<span class="line"></span>
43<span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token class-name static-context">User</span><span class="token operator">::</span><span class="token function">where</span><span class="token punctuation">(</span><span class="token string single-quoted-string">&#39;status&#39;</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">&#39;VIP&#39;</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
44<span class="line"></span>
45<span class="line"><span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">toQuery</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">update</span><span class="token punctuation">(</span><span class="token punctuation">[</span></span>
46<span class="line">    <span class="token string single-quoted-string">&#39;status&#39;</span> <span class="token operator">=&gt;</span> <span class="token string single-quoted-string">&#39;Administrator&#39;</span><span class="token punctuation">,</span></span>
47<span class="line"><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
48<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><a name="method-unique"></a></p><h4 id="unique-key-null-strict-false" tabindex="-1"><a class="header-anchor" href="#unique-key-null-strict-false"><span>unique($key = null, $strict = false)</span></a></h4><p>The <code>unique</code> method returns all of the unique models in the collection. Any models of the same type with the same primary key as another model in the collection are removed:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token variable">$users</span><span class="token operator">-&gt;</span><span class="token function">unique</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
49<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><a name="custom-collections"></a></p><h2 id="custom-collections" tabindex="-1"><a class="header-anchor" href="#custom-collections"><span>Custom Collections</span></a></h2><p>If you would like to use a custom <code>Collection</code> object when interacting with a given model, you may define a <code>newCollection</code> method on your model:</p><div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre><code><span class="line"><span class="token php language-php"><span class="token delimiter important">&lt;?php</span></span>
50<span class="line"></span>
51<span class="line"><span class="token keyword">namespace</span> <span class="token package">App<span class="token punctuation">\\</span>Models</span><span class="token punctuation">;</span></span>
52<span class="line"></span>
53<span class="line"><span class="token keyword">
53use</span> <span class="token package">App<span class="token punctuation">\\</span>Support<span class="token punctuation">\\</span>UserCollection</span><span class="token punctuation">;</span></span>
54<span class="line"><span class="token keyword">use</span> <span class="token package">Hypervel<span class="token punctuation">\\</span>Database<span class="token punctuation">\\</span>Eloquent<span class="token punctuation">\\</span>Model</span><span class="token punctuation">;</span></span>
55<span class="line"></span>
56<span class="line"><span class="token keyword">class</span> <span class="token class-name-definition class-name">User</span> <span class="token keyword">extends</span> <span class="token class-name">Model</span></span>
57<span class="line"><span class="token punctuation">{</span></span>
58<span class="line">    <span class="token doc-comment comment">/**</span>
59<span class="line">     * Create a new Eloquent Collection instance.</span>
60<span class="line">     */</span></span>
61<span class="line">    <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">newCollection</span><span class="token punctuation">(</span><span class="token keyword type-hint">array</span> <span class="token variable">$models</span> <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span></span>
62<span class="line">    <span class="token punctuation">{</span></span>
63<span class="line">        <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">UserCollection</span><span class="token punctuation">(</span><span class="token variable">$models</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
64<span class="line">    <span class="token punctuation">}</span></span>
65<span class="line"><span class="token punctuation">}</span></span>
66<span class="line"></span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Once you have defined a <code>newCollection</code> method, you will receive an instance of your custom collection anytime Eloquent would normally return an <code>Hypervel\\Database\\Eloquent\\Collection</code> instance. If you would like to use a custom collection for every model in your application, you should define the <code>newCollection</code> method on a base model class that is extended by all of your application&#39;s models.</p>`,61);function v(b,g){const s=i("router-link");return c(),l("div",null,[u,n("nav",d,[n("ul",null,[n("li",null,[a(s,{to:"#introduction"},{default:e(()=>[t("Introduction")]),_:1})]),n("li",null,[a(s,{to:"#available-methods"},{default:e(()=>[t("Available Methods")]),_:1})]),n("li",null,[a(s,{to:"#custom-collections"},{default:e(()=>[t("Custom Collections")]),_:1})])])]),h,k,m])}const y=o(r,[["render",v],["__file","eloquent-collections.html.vue"]]),w=JSON.parse('{"path":"/docs/eloquent-collections.html","title":"Eloquent: Collections","lang":"en-US","frontmatter":{"description":"Eloquent: Collections Introduction All Eloquent methods that return more than one model result will return instances of the Hypervel\\\\Database\\\\Eloquent class, including results r...","head":[["meta",{"property":"og:url","content":"https://hypervel.org/docs/eloquent-collections"}],["meta",{"property":"og:site_name","content":"Hypervel"}],["meta",{"property":"og:title","content":"Hypervel - A Coroutine PHP Framework for Laravel Artisans"}],["meta",{"property":"og:description","content":"Hypervel is a Laravel-style framework with native coroutine support for ultra-high performance."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://hypervel.org/home.png"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-02-14T02:32:03.000Z"}],["meta",{"property":"article:modified_time","content":"2026-02-14T02:32:03.000Z"}],["meta",{"name":"twitter:title","content":"Hypervel - A Coroutine PHP Framework For Laravel Artisans"}],["meta",{"name":"twitter:description","content":"Hypervel is a Laravel-style framework with native coroutine support for ultra-high performance."}],["meta",{"name":"twitter:image","content":"https://hypervel.org/home.png"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Eloquent: Collections\\",\\"image\\":[\\"https://hypervel.org/home.png\\"],\\"dateModified\\":\\"202
666-02-14T02:32:03.000Z\\",\\"author\\":[]}"],["title",{},"Hypervel - A Coroutine PHP Framework for Laravel Artisans."]]},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"Available Methods","slug":"available-methods","link":"#available-methods","children":[]},{"level":2,"title":"Custom Collections","slug":"custom-collections","link":"#custom-collections","children":[]}],"git":{"updatedTime":1771036323000,"contributors":[{"name":"Albert Chen","email":"[email protected]","commits":1}]},"filePathRelative":"docs/eloquent-collections.md","autoDesc":true}');export{y as comp,w as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.