title: Laravel collection where clause
body: <p>Is possible in Laravel apply where condition to a collection and the result of that put in another collection without change the first one?</p>
  
  <p>Ex:</p>
  
  <pre><code>$documenti = DB::table("RVW_DocumentiDettaglio")
                  -&gt;select("*")
                  -&gt;where("IDAzienda", "=", $request-&gt;session()-&gt;get("operatore.IDAzienda"))
                  -&gt;whereIn("CodiceStato", [Documento::E_DOC, Documento::W_DOC, Documento::OK_DOC])
                  -&gt;orderBy("IDDocumentoTestata", "asc");
  
  // Ciclo le voci spesa
  foreach ($voci_spesa as $voce_spesa) {
      Log_Controller::debug("Documenti:" . $documenti-&gt;get());
  
      if ($voce_spesa["Manuale"]) {
          $dettaglio = $documenti-&gt;where("Descrizione", "like", "%" . $voce_spesa["Descrizione"] . "%");
      } else {
          $dettaglio = $documenti-&gt;where("Descrizione", "=", $voce_spesa["Descrizione"]);
      }
      Log_Controller::debug("Dettaglio:" . $dettaglio-&gt;get());
  }
  die;
  </code></pre>
  
  <p>With <code>$documenti</code> I get the first collection, in the foreach I apply the where condition and put the result to <code>$dettaglio</code> collection, but the first one (<code>$documenti</code>) was also changed. Why? It's like shared object</p>