4 lines
177 KiB
HTML
4 lines
177 KiB
HTML
<?xml version="1.0"?>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><title>phpDox - Source of QueryBuilderBase.php</title><link rel="stylesheet" type="text/css" href="../css/style.css" media="screen"/><link rel="stylesheet" href="../css/source.css"/><meta http-equiv="content-type" content="text/html; charset=utf-8"/></head><body><nav class="topnav"><ul><li><div class="logo"><span>/**</span>phpDox</div></li><li class="separator"><a href="../index.html">Overview</a></li><li class="separator"><a href="../namespaces.html">Namespaces</a></li><li><a href="../interfaces.html">Interfaces</a></li><li><a href="../classes.html">Classes</a></li><li class="separator"><a href="../source/index.html">Source</a></li></ul></nav><div id="mainstage"><div class="box"><ul class="breadcrumb"><li><a href="../index.html">Overview</a></li><li class="separator"><a href="../source/index.html">Source</a></li></ul></div><h1>Source of file QueryBuilderBase.php</h1><p>
|
|
Size: 14,211 Bytes - Last Modified: 2020-04-23T18:15:48-04:00</p><section><h2><small>src/</small>QueryBuilderBase.php</h2><table class="source"><tr><td class="no"><a class="anker" href="#line1">1</a><a class="anker" href="#line2">2</a><a class="anker" href="#line3">3</a><a class="anker" href="#line4">4</a><a class="anker" href="#line5">5</a><a class="anker" href="#line6">6</a><a class="anker" href="#line7">7</a><a class="anker" href="#line8">8</a><a class="anker" href="#line9">9</a><a class="anker" href="#line10">10</a><a class="anker" href="#line11">11</a><a class="anker" href="#line12">12</a><a class="anker" href="#line13">13</a><a class="anker" href="#line14">14</a><a class="anker" href="#line15">15</a><a class="anker" href="#line16">16</a><a class="anker" href="#line17">17</a><a class="anker" href="#line18">18</a><a class="anker" href="#line19">19</a><a class="anker" href="#line20">20</a><a class="anker" href="#line21">21</a><a class="anker" href="#line22">22</a><a class="anker" href="#line23">23</a><a class="anker" href="#line24">24</a><a class="anker" href="#line25">25</a><a class="anker" href="#line26">26</a><a class="anker" href="#line27">27</a><a class="anker" href="#line28">28</a><a class="anker" href="#line29">29</a><a class="anker" href="#line30">30</a><a class="anker" href="#line31">31</a><a class="anker" href="#line32">32</a><a class="anker" href="#line33">33</a><a class="anker" href="#line34">34</a><a class="anker" href="#line35">35</a><a class="anker" href="#line36">36</a><a class="anker" href="#line37">37</a><a class="anker" href="#line38">38</a><a class="anker" href="#line39">39</a><a class="anker" href="#line40">40</a><a class="anker" href="#line41">41</a><a class="anker" href="#line42">42</a><a class="anker" href="#line43">43</a><a class="anker" href="#line44">44</a><a class="anker" href="#line45">45</a><a class="anker" href="#line46">46</a><a class="anker" href="#line47">47</a><a class="anker" href="#line48">48</a><a class="anker" href="#line49">49</a><a class="anker" href="#line50">50</a><a class="anker" href="#line51">51</a><a class="anker" href="#line52">52</a><a class="anker" href="#line53">53</a><a class="anker" href="#line54">54</a><a class="anker" href="#line55">55</a><a class="anker" href="#line56">56</a><a class="anker" href="#line57">57</a><a class="anker" href="#line58">58</a><a class="anker" href="#line59">59</a><a class="anker" href="#line60">60</a><a class="anker" href="#line61">61</a><a class="anker" href="#line62">62</a><a class="anker" href="#line63">63</a><a class="anker" href="#line64">64</a><a class="anker" href="#line65">65</a><a class="anker" href="#line66">66</a><a class="anker" href="#line67">67</a><a class="anker" href="#line68">68</a><a class="anker" href="#line69">69</a><a class="anker" href="#line70">70</a><a class="anker" href="#line71">71</a><a class="anker" href="#line72">72</a><a class="anker" href="#line73">73</a><a class="anker" href="#line74">74</a><a class="anker" href="#line75">75</a><a class="anker" href="#line76">76</a><a class="anker" href="#line77">77</a><a class="anker" href="#line78">78</a><a class="anker" href="#line79">79</a><a class="anker" href="#line80">80</a><a class="anker" href="#line81">81</a><a class="anker" href="#line82">82</a><a class="anker" href="#line83">83</a><a class="anker" href="#line84">84</a><a class="anker" href="#line85">85</a><a class="anker" href="#line86">86</a><a class="anker" href="#line87">87</a><a class="anker" href="#line88">88</a><a class="anker" href="#line89">89</a><a class="anker" href="#line90">90</a><a class="anker" href="#line91">91</a><a class="anker" href="#line92">92</a><a class="anker" href="#line93">93</a><a class="anker" href="#line94">94</a><a class="anker" href="#line95">95</a><a class="anker" href="#line96">96</a><a class="anker" href="#line97">97</a><a class="anker" href="#line98">98</a><a class="anker" href="#line99">99</a><a class="anker" href="#line100">100</a><a class="anker" href="#line101">101</a><a class="anker" href="#line102">102</a><a class="anker" href="#line103">103</a><a class="anker" href="#line104">104</a><a class="anker" href="#line105">105</a><a class="anker" href="#line106">106</a><a class="anker" href="#line107">107</a><a class="anker" href="#line108">108</a><a class="anker" href="#line109">109</a><a class="anker" href="#line110">110</a><a class="anker" href="#line111">111</a><a class="anker" href="#line112">112</a><a class="anker" href="#line113">113</a><a class="anker" href="#line114">114</a><a class="anker" href="#line115">115</a><a class="anker" href="#line116">116</a><a class="anker" href="#line117">117</a><a class="anker" href="#line118">118</a><a class="anker" href="#line119">119</a><a class="anker" href="#line120">120</a><a class="anker" href="#line121">121</a><a class="anker" href="#line122">122</a><a class="anker" href="#line123">123</a><a class="anker" href="#line124">124</a><a class="anker" href="#line125">125</a><a class="anker" href="#line126">126</a><a class="anker" href="#line127">127</a><a class="anker" href="#line128">128</a><a class="anker" href="#line129">129</a><a class="anker" href="#line130">130</a><a class="anker" href="#line131">131</a><a class="anker" href="#line132">132</a><a class="anker" href="#line133">133</a><a class="anker" href="#line134">134</a><a class="anker" href="#line135">135</a><a class="anker" href="#line136">136</a><a class="anker" href="#line137">137</a><a class="anker" href="#line138">138</a><a class="anker" href="#line139">139</a><a class="anker" href="#line140">140</a><a class="anker" href="#line141">141</a><a class="anker" href="#line142">142</a><a class="anker" href="#line143">143</a><a class="anker" href="#line144">144</a><a class="anker" href="#line145">145</a><a class="anker" href="#line146">146</a><a class="anker" href="#line147">147</a><a class="anker" href="#line148">148</a><a class="anker" href="#line149">149</a><a class="anker" href="#line150">150</a><a class="anker" href="#line151">151</a><a class="anker" href="#line152">152</a><a class="anker" href="#line153">153</a><a class="anker" href="#line154">154</a><a class="anker" href="#line155">155</a><a class="anker" href="#line156">156</a><a class="anker" href="#line157">157</a><a class="anker" href="#line158">158</a><a class="anker" href="#line159">159</a><a class="anker" href="#line160">160</a><a class="anker" href="#line161">161</a><a class="anker" href="#line162">162</a><a class="anker" href="#line163">163</a><a class="anker" href="#line164">164</a><a class="anker" href="#line165">165</a><a class="anker" href="#line166">166</a><a class="anker" href="#line167">167</a><a class="anker" href="#line168">168</a><a class="anker" href="#line169">169</a><a class="anker" href="#line170">170</a><a class="anker" href="#line171">171</a><a class="anker" href="#line172">172</a><a class="anker" href="#line173">173</a><a class="anker" href="#line174">174</a><a class="anker" href="#line175">175</a><a class="anker" href="#line176">176</a><a class="anker" href="#line177">177</a><a class="anker" href="#line178">178</a><a class="anker" href="#line179">179</a><a class="anker" href="#line180">180</a><a class="anker" href="#line181">181</a><a class="anker" href="#line182">182</a><a class="anker" href="#line183">183</a><a class="anker" href="#line184">184</a><a class="anker" href="#line185">185</a><a class="anker" href="#line186">186</a><a class="anker" href="#line187">187</a><a class="anker" href="#line188">188</a><a class="anker" href="#line189">189</a><a class="anker" href="#line190">190</a><a class="anker" href="#line191">191</a><a class="anker" href="#line192">192</a><a class="anker" href="#line193">193</a><a class="anker" href="#line194">194</a><a class="anker" href="#line195">195</a><a class="anker" href="#line196">196</a><a class="anker" href="#line197">197</a><a class="anker" href="#line198">198</a><a class="anker" href="#line199">199</a><a class="anker" href="#line200">200</a><a class="anker" href="#line201">201</a><a class="anker" href="#line202">202</a><a class="anker" href="#line203">203</a><a class="anker" href="#line204">204</a><a class="anker" href="#line205">205</a><a class="anker" href="#line206">206</a><a class="anker" href="#line207">207</a><a class="anker" href="#line208">208</a><a class="anker" href="#line209">209</a><a class="anker" href="#line210">210</a><a class="anker" href="#line211">211</a><a class="anker" href="#line212">212</a><a class="anker" href="#line213">213</a><a class="anker" href="#line214">214</a><a class="anker" href="#line215">215</a><a class="anker" href="#line216">216</a><a class="anker" href="#line217">217</a><a class="anker" href="#line218">218</a><a class="anker" href="#line219">219</a><a class="anker" href="#line220">220</a><a class="anker" href="#line221">221</a><a class="anker" href="#line222">222</a><a class="anker" href="#line223">223</a><a class="anker" href="#line224">224</a><a class="anker" href="#line225">225</a><a class="anker" href="#line226">226</a><a class="anker" href="#line227">227</a><a class="anker" href="#line228">228</a><a class="anker" href="#line229">229</a><a class="anker" href="#line230">230</a><a class="anker" href="#line231">231</a><a class="anker" href="#line232">232</a><a class="anker" href="#line233">233</a><a class="anker" href="#line234">234</a><a class="anker" href="#line235">235</a><a class="anker" href="#line236">236</a><a class="anker" href="#line237">237</a><a class="anker" href="#line238">238</a><a class="anker" href="#line239">239</a><a class="anker" href="#line240">240</a><a class="anker" href="#line241">241</a><a class="anker" href="#line242">242</a><a class="anker" href="#line243">243</a><a class="anker" href="#line244">244</a><a class="anker" href="#line245">245</a><a class="anker" href="#line246">246</a><a class="anker" href="#line247">247</a><a class="anker" href="#line248">248</a><a class="anker" href="#line249">249</a><a class="anker" href="#line250">250</a><a class="anker" href="#line251">251</a><a class="anker" href="#line252">252</a><a class="anker" href="#line253">253</a><a class="anker" href="#line254">254</a><a class="anker" href="#line255">255</a><a class="anker" href="#line256">256</a><a class="anker" href="#line257">257</a><a class="anker" href="#line258">258</a><a class="anker" href="#line259">259</a><a class="anker" href="#line260">260</a><a class="anker" href="#line261">261</a><a class="anker" href="#line262">262</a><a class="anker" href="#line263">263</a><a class="anker" href="#line264">264</a><a class="anker" href="#line265">265</a><a class="anker" href="#line266">266</a><a class="anker" href="#line267">267</a><a class="anker" href="#line268">268</a><a class="anker" href="#line269">269</a><a class="anker" href="#line270">270</a><a class="anker" href="#line271">271</a><a class="anker" href="#line272">272</a><a class="anker" href="#line273">273</a><a class="anker" href="#line274">274</a><a class="anker" href="#line275">275</a><a class="anker" href="#line276">276</a><a class="anker" href="#line277">277</a><a class="anker" href="#line278">278</a><a class="anker" href="#line279">279</a><a class="anker" href="#line280">280</a><a class="anker" href="#line281">281</a><a class="anker" href="#line282">282</a><a class="anker" href="#line283">283</a><a class="anker" href="#line284">284</a><a class="anker" href="#line285">285</a><a class="anker" href="#line286">286</a><a class="anker" href="#line287">287</a><a class="anker" href="#line288">288</a><a class="anker" href="#line289">289</a><a class="anker" href="#line290">290</a><a class="anker" href="#line291">291</a><a class="anker" href="#line292">292</a><a class="anker" href="#line293">293</a><a class="anker" href="#line294">294</a><a class="anker" href="#line295">295</a><a class="anker" href="#line296">296</a><a class="anker" href="#line297">297</a><a class="anker" href="#line298">298</a><a class="anker" href="#line299">299</a><a class="anker" href="#line300">300</a><a class="anker" href="#line301">301</a><a class="anker" href="#line302">302</a><a class="anker" href="#line303">303</a><a class="anker" href="#line304">304</a><a class="anker" href="#line305">305</a><a class="anker" href="#line306">306</a><a class="anker" href="#line307">307</a><a class="anker" href="#line308">308</a><a class="anker" href="#line309">309</a><a class="anker" href="#line310">310</a><a class="anker" href="#line311">311</a><a class="anker" href="#line312">312</a><a class="anker" href="#line313">313</a><a class="anker" href="#line314">314</a><a class="anker" href="#line315">315</a><a class="anker" href="#line316">316</a><a class="anker" href="#line317">317</a><a class="anker" href="#line318">318</a><a class="anker" href="#line319">319</a><a class="anker" href="#line320">320</a><a class="anker" href="#line321">321</a><a class="anker" href="#line322">322</a><a class="anker" href="#line323">323</a><a class="anker" href="#line324">324</a><a class="anker" href="#line325">325</a><a class="anker" href="#line326">326</a><a class="anker" href="#line327">327</a><a class="anker" href="#line328">328</a><a class="anker" href="#line329">329</a><a class="anker" href="#line330">330</a><a class="anker" href="#line331">331</a><a class="anker" href="#line332">332</a><a class="anker" href="#line333">333</a><a class="anker" href="#line334">334</a><a class="anker" href="#line335">335</a><a class="anker" href="#line336">336</a><a class="anker" href="#line337">337</a><a class="anker" href="#line338">338</a><a class="anker" href="#line339">339</a><a class="anker" href="#line340">340</a><a class="anker" href="#line341">341</a><a class="anker" href="#line342">342</a><a class="anker" href="#line343">343</a><a class="anker" href="#line344">344</a><a class="anker" href="#line345">345</a><a class="anker" href="#line346">346</a><a class="anker" href="#line347">347</a><a class="anker" href="#line348">348</a><a class="anker" href="#line349">349</a><a class="anker" href="#line350">350</a><a class="anker" href="#line351">351</a><a class="anker" href="#line352">352</a><a class="anker" href="#line353">353</a><a class="anker" href="#line354">354</a><a class="anker" href="#line355">355</a><a class="anker" href="#line356">356</a><a class="anker" href="#line357">357</a><a class="anker" href="#line358">358</a><a class="anker" href="#line359">359</a><a class="anker" href="#line360">360</a><a class="anker" href="#line361">361</a><a class="anker" href="#line362">362</a><a class="anker" href="#line363">363</a><a class="anker" href="#line364">364</a><a class="anker" href="#line365">365</a><a class="anker" href="#line366">366</a><a class="anker" href="#line367">367</a><a class="anker" href="#line368">368</a><a class="anker" href="#line369">369</a><a class="anker" href="#line370">370</a><a class="anker" href="#line371">371</a><a class="anker" href="#line372">372</a><a class="anker" href="#line373">373</a><a class="anker" href="#line374">374</a><a class="anker" href="#line375">375</a><a class="anker" href="#line376">376</a><a class="anker" href="#line377">377</a><a class="anker" href="#line378">378</a><a class="anker" href="#line379">379</a><a class="anker" href="#line380">380</a><a class="anker" href="#line381">381</a><a class="anker" href="#line382">382</a><a class="anker" href="#line383">383</a><a class="anker" href="#line384">384</a><a class="anker" href="#line385">385</a><a class="anker" href="#line386">386</a><a class="anker" href="#line387">387</a><a class="anker" href="#line388">388</a><a class="anker" href="#line389">389</a><a class="anker" href="#line390">390</a><a class="anker" href="#line391">391</a><a class="anker" href="#line392">392</a><a class="anker" href="#line393">393</a><a class="anker" href="#line394">394</a><a class="anker" href="#line395">395</a><a class="anker" href="#line396">396</a><a class="anker" href="#line397">397</a><a class="anker" href="#line398">398</a><a class="anker" href="#line399">399</a><a class="anker" href="#line400">400</a><a class="anker" href="#line401">401</a><a class="anker" href="#line402">402</a><a class="anker" href="#line403">403</a><a class="anker" href="#line404">404</a><a class="anker" href="#line405">405</a><a class="anker" href="#line406">406</a><a class="anker" href="#line407">407</a><a class="anker" href="#line408">408</a><a class="anker" href="#line409">409</a><a class="anker" href="#line410">410</a><a class="anker" href="#line411">411</a><a class="anker" href="#line412">412</a><a class="anker" href="#line413">413</a><a class="anker" href="#line414">414</a><a class="anker" href="#line415">415</a><a class="anker" href="#line416">416</a><a class="anker" href="#line417">417</a><a class="anker" href="#line418">418</a><a class="anker" href="#line419">419</a><a class="anker" href="#line420">420</a><a class="anker" href="#line421">421</a><a class="anker" href="#line422">422</a><a class="anker" href="#line423">423</a><a class="anker" href="#line424">424</a><a class="anker" href="#line425">425</a><a class="anker" href="#line426">426</a><a class="anker" href="#line427">427</a><a class="anker" href="#line428">428</a><a class="anker" href="#line429">429</a><a class="anker" href="#line430">430</a><a class="anker" href="#line431">431</a><a class="anker" href="#line432">432</a><a class="anker" href="#line433">433</a><a class="anker" href="#line434">434</a><a class="anker" href="#line435">435</a><a class="anker" href="#line436">436</a><a class="anker" href="#line437">437</a><a class="anker" href="#line438">438</a><a class="anker" href="#line439">439</a><a class="anker" href="#line440">440</a><a class="anker" href="#line441">441</a><a class="anker" href="#line442">442</a><a class="anker" href="#line443">443</a><a class="anker" href="#line444">444</a><a class="anker" href="#line445">445</a><a class="anker" href="#line446">446</a><a class="anker" href="#line447">447</a><a class="anker" href="#line448">448</a><a class="anker" href="#line449">449</a><a class="anker" href="#line450">450</a><a class="anker" href="#line451">451</a><a class="anker" href="#line452">452</a><a class="anker" href="#line453">453</a><a class="anker" href="#line454">454</a><a class="anker" href="#line455">455</a><a class="anker" href="#line456">456</a><a class="anker" href="#line457">457</a><a class="anker" href="#line458">458</a><a class="anker" href="#line459">459</a><a class="anker" href="#line460">460</a><a class="anker" href="#line461">461</a><a class="anker" href="#line462">462</a><a class="anker" href="#line463">463</a><a class="anker" href="#line464">464</a><a class="anker" href="#line465">465</a><a class="anker" href="#line466">466</a><a class="anker" href="#line467">467</a><a class="anker" href="#line468">468</a><a class="anker" href="#line469">469</a><a class="anker" href="#line470">470</a><a class="anker" href="#line471">471</a><a class="anker" href="#line472">472</a><a class="anker" href="#line473">473</a><a class="anker" href="#line474">474</a><a class="anker" href="#line475">475</a><a class="anker" href="#line476">476</a><a class="anker" href="#line477">477</a><a class="anker" href="#line478">478</a><a class="anker" href="#line479">479</a><a class="anker" href="#line480">480</a><a class="anker" href="#line481">481</a><a class="anker" href="#line482">482</a><a class="anker" href="#line483">483</a><a class="anker" href="#line484">484</a><a class="anker" href="#line485">485</a><a class="anker" href="#line486">486</a><a class="anker" href="#line487">487</a><a class="anker" href="#line488">488</a><a class="anker" href="#line489">489</a><a class="anker" href="#line490">490</a><a class="anker" href="#line491">491</a><a class="anker" href="#line492">492</a><a class="anker" href="#line493">493</a><a class="anker" href="#line494">494</a><a class="anker" href="#line495">495</a><a class="anker" href="#line496">496</a><a class="anker" href="#line497">497</a><a class="anker" href="#line498">498</a><a class="anker" href="#line499">499</a><a class="anker" href="#line500">500</a><a class="anker" href="#line501">501</a><a class="anker" href="#line502">502</a><a class="anker" href="#line503">503</a><a class="anker" href="#line504">504</a><a class="anker" href="#line505">505</a><a class="anker" href="#line506">506</a><a class="anker" href="#line507">507</a><a class="anker" href="#line508">508</a><a class="anker" href="#line509">509</a><a class="anker" href="#line510">510</a><a class="anker" href="#line511">511</a><a class="anker" href="#line512">512</a><a class="anker" href="#line513">513</a><a class="anker" href="#line514">514</a><a class="anker" href="#line515">515</a><a class="anker" href="#line516">516</a><a class="anker" href="#line517">517</a><a class="anker" href="#line518">518</a><a class="anker" href="#line519">519</a><a class="anker" href="#line520">520</a><a class="anker" href="#line521">521</a><a class="anker" href="#line522">522</a><a class="anker" href="#line523">523</a><a class="anker" href="#line524">524</a><a class="anker" href="#line525">525</a><a class="anker" href="#line526">526</a><a class="anker" href="#line527">527</a><a class="anker" href="#line528">528</a><a class="anker" href="#line529">529</a><a class="anker" href="#line530">530</a><a class="anker" href="#line531">531</a><a class="anker" href="#line532">532</a><a class="anker" href="#line533">533</a><a class="anker" href="#line534">534</a><a class="anker" href="#line535">535</a><a class="anker" href="#line536">536</a><a class="anker" href="#line537">537</a><a class="anker" href="#line538">538</a><a class="anker" href="#line539">539</a><a class="anker" href="#line540">540</a><a class="anker" href="#line541">541</a><a class="anker" href="#line542">542</a><a class="anker" href="#line543">543</a><a class="anker" href="#line544">544</a><a class="anker" href="#line545">545</a><a class="anker" href="#line546">546</a><a class="anker" href="#line547">547</a><a class="anker" href="#line548">548</a><a class="anker" href="#line549">549</a><a class="anker" href="#line550">550</a><a class="anker" href="#line551">551</a><a class="anker" href="#line552">552</a><a class="anker" href="#line553">553</a><a class="anker" href="#line554">554</a><a class="anker" href="#line555">555</a><a class="anker" href="#line556">556</a><a class="anker" href="#line557">557</a><a class="anker" href="#line558">558</a><a class="anker" href="#line559">559</a><a class="anker" href="#line560">560</a><a class="anker" href="#line561">561</a><a class="anker" href="#line562">562</a><a class="anker" href="#line563">563</a><a class="anker" href="#line564">564</a><a class="anker" href="#line565">565</a><a class="anker" href="#line566">566</a><a class="anker" href="#line567">567</a><a class="anker" href="#line568">568</a><a class="anker" href="#line569">569</a><a class="anker" href="#line570">570</a><a class="anker" href="#line571">571</a><a class="anker" href="#line572">572</a><a class="anker" href="#line573">573</a><a class="anker" href="#line574">574</a><a class="anker" href="#line575">575</a><a class="anker" href="#line576">576</a><a class="anker" href="#line577">577</a><a class="anker" href="#line578">578</a><a class="anker" href="#line579">579</a><a class="anker" href="#line580">580</a><a class="anker" href="#line581">581</a><a class="anker" href="#line582">582</a><a class="anker" href="#line583">583</a><a class="anker" href="#line584">584</a><a class="anker" href="#line585">585</a><a class="anker" href="#line586">586</a><a class="anker" href="#line587">587</a><a class="anker" href="#line588">588</a><a class="anker" href="#line589">589</a><a class="anker" href="#line590">590</a><a class="anker" href="#line591">591</a><a class="anker" href="#line592">592</a><a class="anker" href="#line593">593</a><a class="anker" href="#line594">594</a><a class="anker" href="#line595">595</a><a class="anker" href="#line596">596</a><a class="anker" href="#line597">597</a><a class="anker" href="#line598">598</a><a class="anker" href="#line599">599</a><a class="anker" href="#line600">600</a><a class="anker" href="#line601">601</a><a class="anker" href="#line602">602</a><a class="anker" href="#line603">603</a><a class="anker" href="#line604">604</a><a class="anker" href="#line605">605</a><a class="anker" href="#line606">606</a><a class="anker" href="#line607">607</a><a class="anker" href="#line608">608</a><a class="anker" href="#line609">609</a><a class="anker" href="#line610">610</a><a class="anker" href="#line611">611</a><a class="anker" href="#line612">612</a><a class="anker" href="#line613">613</a><a class="anker" href="#line614">614</a><a class="anker" href="#line615">615</a><a class="anker" href="#line616">616</a><a class="anker" href="#line617">617</a><a class="anker" href="#line618">618</a><a class="anker" href="#line619">619</a><a class="anker" href="#line620">620</a></td><td class="line"><div id="line1"><pre><span class="token T_OPEN_TAG"><?php </span><span class="token T_DECLARE">declare</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">strict_types</span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_LNUMBER">1</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line2"><pre><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line3"><pre><span class="token T_DOC_COMMENT"> * Query</span></pre></div><div id="line4"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line5"><pre><span class="token T_DOC_COMMENT"> * SQL Query Builder / Database Abstraction Layer</span></pre></div><div id="line6"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line7"><pre><span class="token T_DOC_COMMENT"> * PHP version 7.4</span></pre></div><div id="line8"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line9"><pre><span class="token T_DOC_COMMENT"> * @package Query</span></pre></div><div id="line10"><pre><span class="token T_DOC_COMMENT"> * @author Timothy J. Warren <tim@timshomepage.net></span></pre></div><div id="line11"><pre><span class="token T_DOC_COMMENT"> * @copyright 2012 - 2020 Timothy J. Warren</span></pre></div><div id="line12"><pre><span class="token T_DOC_COMMENT"> * @license http://www.opensource.org/licenses/mit-license.html MIT License</span></pre></div><div id="line13"><pre><span class="token T_DOC_COMMENT"> * @link https://git.timshomepage.net/aviat/Query</span></pre></div><div id="line14"><pre><span class="token T_DOC_COMMENT"> * @version 3.0.0</span></pre></div><div id="line15"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line16"><pre><span class="token T_NAMESPACE">namespace</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">Query</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line17"><br/></div><div id="line18"><pre><span class="token T_USE">use</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">regexInArray</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line19"><br/></div><div id="line20"><pre><span class="token T_USE">use</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">BadMethodCallException</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line21"><pre><span class="token T_USE">use</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">PDO</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line22"><pre><span class="token T_USE">use</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">PDOStatement</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line23"><pre><span class="token T_USE">use</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">Query</span><span class="token T_NS_SEPARATOR">\</span><span class="token T_STRING">Drivers</span><span class="token T_NS_SEPARATOR">\</span><span class="token T_STRING">DriverInterface</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line24"><br/></div><div id="line25"><pre><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line26"><pre><span class="token T_DOC_COMMENT"> * @method affectedRows(): int</span></pre></div><div id="line27"><pre><span class="token T_DOC_COMMENT"> * @method beginTransaction(): bool</span></pre></div><div id="line28"><pre><span class="token T_DOC_COMMENT"> * @method commit(): bool</span></pre></div><div id="line29"><pre><span class="token T_DOC_COMMENT"> * @method errorCode(): string</span></pre></div><div id="line30"><pre><span class="token T_DOC_COMMENT"> * @method errorInfo(): array</span></pre></div><div id="line31"><pre><span class="token T_DOC_COMMENT"> * @method exec(string $statement): int</span></pre></div><div id="line32"><pre><span class="token T_DOC_COMMENT"> * @method getAttribute(int $attribute)</span></pre></div><div id="line33"><pre><span class="token T_DOC_COMMENT"> * @method getColumns(string $table): array | null</span></pre></div><div id="line34"><pre><span class="token T_DOC_COMMENT"> * @method getDbs(): array | null</span></pre></div><div id="line35"><pre><span class="token T_DOC_COMMENT"> * @method getFks(string $table): array | null</span></pre></div><div id="line36"><pre><span class="token T_DOC_COMMENT"> * @method getFunctions(): array | null</span></pre></div><div id="line37"><pre><span class="token T_DOC_COMMENT"> * @method getIndexes(string $table): array | null</span></pre></div><div id="line38"><pre><span class="token T_DOC_COMMENT"> * @method getLastQuery(): string</span></pre></div><div id="line39"><pre><span class="token T_DOC_COMMENT"> * @method getProcedures(): array | null</span></pre></div><div id="line40"><pre><span class="token T_DOC_COMMENT"> * @method getSchemas(): array | null</span></pre></div><div id="line41"><pre><span class="token T_DOC_COMMENT"> * @method getSequences(): array | null</span></pre></div><div id="line42"><pre><span class="token T_DOC_COMMENT"> * @method getSystemTables(): array | null</span></pre></div><div id="line43"><pre><span class="token T_DOC_COMMENT"> * @method getTables(): array</span></pre></div><div id="line44"><pre><span class="token T_DOC_COMMENT"> * @method getTriggers(): array | null</span></pre></div><div id="line45"><pre><span class="token T_DOC_COMMENT"> * @method getTypes(): array | null</span></pre></div><div id="line46"><pre><span class="token T_DOC_COMMENT"> * @method getUtil(): \Query\Drivers\AbstractUtil</span></pre></div><div id="line47"><pre><span class="token T_DOC_COMMENT"> * @method getVersion(): string</span></pre></div><div id="line48"><pre><span class="token T_DOC_COMMENT"> * @method getViews(): array | null</span></pre></div><div id="line49"><pre><span class="token T_DOC_COMMENT"> * @method inTransaction(): bool</span></pre></div><div id="line50"><pre><span class="token T_DOC_COMMENT"> * @method lastInsertId(string $name = NULL): string</span></pre></div><div id="line51"><pre><span class="token T_DOC_COMMENT"> * @method numRows(): int | null</span></pre></div><div id="line52"><pre><span class="token T_DOC_COMMENT"> * @method prepare(string $statement, array $driver_options = []): PDOStatement</span></pre></div><div id="line53"><pre><span class="token T_DOC_COMMENT"> * @method prepareExecute(string $sql, array $params): PDOStatement</span></pre></div><div id="line54"><pre><span class="token T_DOC_COMMENT"> * @method prepareQuery(string $sql, array $data): PDOStatement</span></pre></div><div id="line55"><pre><span class="token T_DOC_COMMENT"> * @method query(string $statement): PDOStatement</span></pre></div><div id="line56"><pre><span class="token T_DOC_COMMENT"> * @method quote(string $string, int $parameter_type = PDO::PARAM_STR): string</span></pre></div><div id="line57"><pre><span class="token T_DOC_COMMENT"> * @method rollback(): bool</span></pre></div><div id="line58"><pre><span class="token T_DOC_COMMENT"> * @method setAttribute(int $attribute, $value): bool</span></pre></div><div id="line59"><pre><span class="token T_DOC_COMMENT"> * @method setTablePrefix(string $prefix): void</span></pre></div><div id="line60"><pre><span class="token T_DOC_COMMENT"> * @method truncate(string $table): PDOStatement</span></pre></div><div id="line61"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line62"><pre><span class="token T_CLASS">class</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryBuilderBase</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line63"><br/></div><div id="line64"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line65"><pre><span class="token T_DOC_COMMENT"> * Convenience property for connection management</span></pre></div><div id="line66"><pre><span class="token T_DOC_COMMENT"> * @var string</span></pre></div><div id="line67"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line68"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$connName</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line69"><br/></div><div id="line70"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line71"><pre><span class="token T_DOC_COMMENT"> * List of queries executed</span></pre></div><div id="line72"><pre><span class="token T_DOC_COMMENT"> * @var array</span></pre></div><div id="line73"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line74"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_ARRAY">array</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$queries</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span></pre></div><div id="line75"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'total_time'</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_LNUMBER">0</span></pre></div><div id="line76"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line77"><br/></div><div id="line78"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line79"><pre><span class="token T_DOC_COMMENT"> * Whether to do only an explain on the query</span></pre></div><div id="line80"><pre><span class="token T_DOC_COMMENT"> * @var bool</span></pre></div><div id="line81"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line82"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">bool</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$explain</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line83"><br/></div><div id="line84"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line85"><pre><span class="token T_DOC_COMMENT"> * Whether to return data from a modification query</span></pre></div><div id="line86"><pre><span class="token T_DOC_COMMENT"> * @var bool</span></pre></div><div id="line87"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line88"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">bool</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$returning</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line89"><br/></div><div id="line90"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line91"><pre><span class="token T_DOC_COMMENT"> * The current database driver</span></pre></div><div id="line92"><pre><span class="token T_DOC_COMMENT"> * @var DriverInterface</span></pre></div><div id="line93"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line94"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_STRING">DriverInterface</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$driver</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line95"><br/></div><div id="line96"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line97"><pre><span class="token T_DOC_COMMENT"> * Query parser class instance</span></pre></div><div id="line98"><pre><span class="token T_DOC_COMMENT"> * @var QueryParser</span></pre></div><div id="line99"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line100"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryParser</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$parser</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line101"><br/></div><div id="line102"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line103"><pre><span class="token T_DOC_COMMENT"> * Query Builder state</span></pre></div><div id="line104"><pre><span class="token T_DOC_COMMENT"> * @var State</span></pre></div><div id="line105"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line106"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">State</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$state</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line107"><br/></div><div id="line108"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// --------------------------------------------------------------------------</span></pre></div><div id="line109"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// ! Methods</span></pre></div><div id="line110"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// --------------------------------------------------------------------------</span></pre></div><div id="line111"><br/></div><div id="line112"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line113"><pre><span class="token T_DOC_COMMENT"> * Constructor</span></pre></div><div id="line114"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line115"><pre><span class="token T_DOC_COMMENT"> * @param DriverInterface $driver</span></pre></div><div id="line116"><pre><span class="token T_DOC_COMMENT"> * @param QueryParser $parser</span></pre></div><div id="line117"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line118"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">__construct</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">DriverInterface</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$driver</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryParser</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$parser</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line119"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line120"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Inject driver and parser</span></pre></div><div id="line121"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$driver</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line122"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">parser</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$parser</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line123"><br/></div><div id="line124"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Create new State object</span></pre></div><div id="line125"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_NEW">new</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">State</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line126"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line127"><br/></div><div id="line128"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line129"><pre><span class="token T_DOC_COMMENT"> * Destructor</span></pre></div><div id="line130"><pre><span class="token T_DOC_COMMENT"> * @codeCoverageIgnore</span></pre></div><div id="line131"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line132"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">__destruct</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line133"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line134"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">NULL</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line135"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line136"><br/></div><div id="line137"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line138"><pre><span class="token T_DOC_COMMENT"> * Calls a function further down the inheritance chain.</span></pre></div><div id="line139"><pre><span class="token T_DOC_COMMENT"> * 'Implements' methods on the driver object</span></pre></div><div id="line140"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line141"><pre><span class="token T_DOC_COMMENT"> * @param string $name</span></pre></div><div id="line142"><pre><span class="token T_DOC_COMMENT"> * @param array $params</span></pre></div><div id="line143"><pre><span class="token T_DOC_COMMENT"> * @return mixed</span></pre></div><div id="line144"><pre><span class="token T_DOC_COMMENT"> * @throws BadMethodCallException</span></pre></div><div id="line145"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line146"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">__call</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$name</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_ARRAY">array</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$params</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line147"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line148"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">method_exists</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$name</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line149"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line150"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_VARIABLE">$name</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_ELLIPSIS">...</span><span class="token T_VARIABLE">$params</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line151"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line152"><br/></div><div id="line153"><pre><span class="token T_WHITESPACE"> </span><span class="token T_THROW">throw</span><span class="token T_WHITESPACE"> </span><span class="token T_NEW">new</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">BadMethodCallException</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">'Method does not exist'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line154"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line155"><br/></div><div id="line156"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line157"><pre><span class="token T_DOC_COMMENT"> * Clear out the class variables, so the next query can be run</span></pre></div><div id="line158"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line159"><pre><span class="token T_DOC_COMMENT"> * @return void</span></pre></div><div id="line160"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line161"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PUBLIC">public</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">resetQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">void</span></pre></div><div id="line162"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line163"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_NEW">new</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">State</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line164"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">explain</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line165"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">returning</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line166"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line167"><br/></div><div id="line168"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line169"><pre><span class="token T_DOC_COMMENT"> * Method to simplify select_ methods</span></pre></div><div id="line170"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line171"><pre><span class="token T_DOC_COMMENT"> * @param string $field</span></pre></div><div id="line172"><pre><span class="token T_DOC_COMMENT"> * @param string|bool $as</span></pre></div><div id="line173"><pre><span class="token T_DOC_COMMENT"> * @return string</span></pre></div><div id="line174"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line175"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_select</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$as</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span></pre></div><div id="line176"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line177"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Escape the identifiers</span></pre></div><div id="line178"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line179"><br/></div><div id="line180"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EXCLAMATION_MARK">!</span><span class="token T_WHITESPACE"> </span><span class="token T_NS_SEPARATOR">\</span><span class="token T_STRING">is_string</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$as</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line181"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line182"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// @codeCoverageIgnoreStart</span></pre></div><div id="line183"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line184"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// @codeCoverageIgnoreEnd</span></pre></div><div id="line185"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line186"><br/></div><div id="line187"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$as</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$as</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line188"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">(</span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE">) AS </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$as</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line189"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line190"><br/></div><div id="line191"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line192"><pre><span class="token T_DOC_COMMENT"> * Helper function for returning sql strings</span></pre></div><div id="line193"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line194"><pre><span class="token T_DOC_COMMENT"> * @param string $type</span></pre></div><div id="line195"><pre><span class="token T_DOC_COMMENT"> * @param string $table</span></pre></div><div id="line196"><pre><span class="token T_DOC_COMMENT"> * @param bool $reset</span></pre></div><div id="line197"><pre><span class="token T_DOC_COMMENT"> * @return string</span></pre></div><div id="line198"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line199"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_getCompile</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">bool</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$reset</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span></pre></div><div id="line200"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line201"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_compile</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line202"><br/></div><div id="line203"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Reset the query builder for the next query</span></pre></div><div id="line204"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$reset</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line205"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line206"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">resetQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line207"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line208"><br/></div><div id="line209"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line210"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line211"><br/></div><div id="line212"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line213"><pre><span class="token T_DOC_COMMENT"> * Simplify 'like' methods</span></pre></div><div id="line214"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line215"><pre><span class="token T_DOC_COMMENT"> * @param string $field</span></pre></div><div id="line216"><pre><span class="token T_DOC_COMMENT"> * @param mixed $val</span></pre></div><div id="line217"><pre><span class="token T_DOC_COMMENT"> * @param string $pos</span></pre></div><div id="line218"><pre><span class="token T_DOC_COMMENT"> * @param string $like</span></pre></div><div id="line219"><pre><span class="token T_DOC_COMMENT"> * @param string $conj</span></pre></div><div id="line220"><pre><span class="token T_DOC_COMMENT"> * @return self</span></pre></div><div id="line221"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line222"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_like</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$pos</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$like</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'LIKE'</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'AND'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">self</span></pre></div><div id="line223"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line224"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$field</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line225"><br/></div><div id="line226"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Add the like string into the order map</span></pre></div><div id="line227"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$like</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$field</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$like</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> ?</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line228"><br/></div><div id="line229"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$pos</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">LikeType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">BEFORE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line230"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line231"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">%</span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line232"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line233"><pre><span class="token T_WHITESPACE"> </span><span class="token T_ELSEIF">elseif</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$pos</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">LikeType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">AFTER</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line234"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line235"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE">%</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line236"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line237"><pre><span class="token T_WHITESPACE"> </span><span class="token T_ELSE">else</span></pre></div><div id="line238"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line239"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">%</span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE">%</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line240"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line241"><br/></div><div id="line242"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getQueryMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">' WHERE '</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$conj</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line243"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$conj</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$like</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">MapType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">LIKE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line244"><br/></div><div id="line245"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Add to the values array</span></pre></div><div id="line246"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendWhereValues</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line247"><br/></div><div id="line248"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line249"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line250"><br/></div><div id="line251"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line252"><pre><span class="token T_DOC_COMMENT"> * Simplify building having clauses</span></pre></div><div id="line253"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line254"><pre><span class="token T_DOC_COMMENT"> * @param mixed $key</span></pre></div><div id="line255"><pre><span class="token T_DOC_COMMENT"> * @param mixed $values</span></pre></div><div id="line256"><pre><span class="token T_DOC_COMMENT"> * @param string $conj</span></pre></div><div id="line257"><pre><span class="token T_DOC_COMMENT"> * @return self</span></pre></div><div id="line258"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line259"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_having</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'AND'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">self</span></pre></div><div id="line260"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line261"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$where</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_where</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line262"><br/></div><div id="line263"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Create key/value placeholders</span></pre></div><div id="line264"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$where</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$f</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line265"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line266"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Split each key by spaces, in case there</span></pre></div><div id="line267"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// is an operator such as >, <, !=, etc.</span></pre></div><div id="line268"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$fArray</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">explode</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">' '</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">trim</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$f</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line269"><br/></div><div id="line270"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_LNUMBER">0</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line271"><br/></div><div id="line272"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Simple key value, or an operator</span></pre></div><div id="line273"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span><span class="token T_WHITESPACE"> </span><span class="token T_CONCAT_EQUAL">.=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">count</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_LNUMBER">1</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'=?'</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_LNUMBER">1</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> ?</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line274"><br/></div><div id="line275"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Put in the having map</span></pre></div><div id="line276"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendHavingMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span></pre></div><div id="line277"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'conjunction'</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getHavingMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line278"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">' HAVING '</span></pre></div><div id="line279"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$conj</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line280"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'string'</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span></pre></div><div id="line281"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line282"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line283"><br/></div><div id="line284"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line285"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line286"><br/></div><div id="line287"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line288"><pre><span class="token T_DOC_COMMENT"> * Do all the redundant stuff for where/having type methods</span></pre></div><div id="line289"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line290"><pre><span class="token T_DOC_COMMENT"> * @param mixed $key</span></pre></div><div id="line291"><pre><span class="token T_DOC_COMMENT"> * @param mixed $val</span></pre></div><div id="line292"><pre><span class="token T_DOC_COMMENT"> * @return array</span></pre></div><div id="line293"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line294"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_where</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_ARRAY">array</span></pre></div><div id="line295"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line296"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$where</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line297"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$pairs</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line298"><br/></div><div id="line299"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">is_scalar</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line300"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line301"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$pairs</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line302"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_WHITESPACE"> </span><span class="token T_ELSE">else</span></pre></div><div id="line303"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line304"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$pairs</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line305"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line306"><br/></div><div id="line307"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$pairs</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$k</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line308"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line309"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$where</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_VARIABLE">$k</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line310"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendWhereValues</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line311"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line312"><br/></div><div id="line313"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$where</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line314"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line315"><br/></div><div id="line316"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line317"><pre><span class="token T_DOC_COMMENT"> * Simplify generating where string</span></pre></div><div id="line318"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line319"><pre><span class="token T_DOC_COMMENT"> * @param mixed $key</span></pre></div><div id="line320"><pre><span class="token T_DOC_COMMENT"> * @param mixed $values</span></pre></div><div id="line321"><pre><span class="token T_DOC_COMMENT"> * @param string $defaultConj</span></pre></div><div id="line322"><pre><span class="token T_DOC_COMMENT"> * @return self</span></pre></div><div id="line323"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line324"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_whereString</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$defaultConj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'AND'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">self</span></pre></div><div id="line325"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line326"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Create key/value placeholders</span></pre></div><div id="line327"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_where</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$f</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line328"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line329"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$queryMap</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getQueryMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line330"><br/></div><div id="line331"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Split each key by spaces, in case there</span></pre></div><div id="line332"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// is an operator such as >, <, !=, etc.</span></pre></div><div id="line333"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$fArray</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">explode</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">' '</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">trim</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$f</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line334"><br/></div><div id="line335"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_LNUMBER">0</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line336"><br/></div><div id="line337"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Simple key value, or an operator</span></pre></div><div id="line338"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span><span class="token T_WHITESPACE"> </span><span class="token T_CONCAT_EQUAL">.=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">count</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_LNUMBER">1</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'=?'</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$fArray</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_LNUMBER">1</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> ?</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line339"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$lastItem</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">end</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$queryMap</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line340"><br/></div><div id="line341"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Determine the correct conjunction</span></pre></div><div id="line342"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conjunctionList</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">array_column</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$queryMap</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'conjunction'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line343"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$queryMap</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_BOOLEAN_OR">||</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EXCLAMATION_MARK">!</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">regexInArray</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$conjunctionList</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">"/^ ?\n?WHERE/i"</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line344"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line345"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">"\nWHERE "</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line346"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_WHITESPACE"> </span><span class="token T_ELSEIF">elseif</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$lastItem</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_CONSTANT_ENCAPSED_STRING">'type'</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'group_start'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line347"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line348"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line349"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_WHITESPACE"> </span><span class="token T_ELSE">else</span></pre></div><div id="line350"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line351"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$defaultConj</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line352"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line353"><br/></div><div id="line354"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$conj</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$item</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">MapType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">WHERE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line355"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line356"><br/></div><div id="line357"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line358"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line359"><br/></div><div id="line360"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line361"><pre><span class="token T_DOC_COMMENT"> * Simplify where_in methods</span></pre></div><div id="line362"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line363"><pre><span class="token T_DOC_COMMENT"> * @param mixed $key</span></pre></div><div id="line364"><pre><span class="token T_DOC_COMMENT"> * @param mixed $val</span></pre></div><div id="line365"><pre><span class="token T_DOC_COMMENT"> * @param string $in - The (not) in fragment</span></pre></div><div id="line366"><pre><span class="token T_DOC_COMMENT"> * @param string $conj - The where in conjunction</span></pre></div><div id="line367"><pre><span class="token T_DOC_COMMENT"> * @return self</span></pre></div><div id="line368"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line369"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_whereIn</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$val</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$in</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'IN'</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conj</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'AND'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">self</span></pre></div><div id="line370"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line371"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$key</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteIdent</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$key</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line372"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$params</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">array_fill</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_LNUMBER">0</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">count</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'?'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line373"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendWhereValues</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$val</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line374"><br/></div><div id="line375"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$conjunction</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getQueryMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">' WHERE '</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$conj</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line376"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$str</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$key</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE"> </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$in</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> (</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">implode</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">','</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$params</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">') '</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line377"><br/></div><div id="line378"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">appendMap</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$conjunction</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$str</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">MapType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">WHERE_IN</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line379"><br/></div><div id="line380"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line381"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line382"><br/></div><div id="line383"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line384"><pre><span class="token T_DOC_COMMENT"> * Executes the compiled query</span></pre></div><div id="line385"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line386"><pre><span class="token T_DOC_COMMENT"> * @param string $type</span></pre></div><div id="line387"><pre><span class="token T_DOC_COMMENT"> * @param string $table</span></pre></div><div id="line388"><pre><span class="token T_DOC_COMMENT"> * @param string $sql</span></pre></div><div id="line389"><pre><span class="token T_DOC_COMMENT"> * @param array|null $vals</span></pre></div><div id="line390"><pre><span class="token T_DOC_COMMENT"> * @param boolean $reset</span></pre></div><div id="line391"><pre><span class="token T_DOC_COMMENT"> * @return PDOStatement</span></pre></div><div id="line392"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line393"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_run</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">NULL</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_ARRAY">array</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$vals</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">NULL</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">bool</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$reset</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">TRUE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">PDOStatement</span></pre></div><div id="line394"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line395"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">NULL</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line396"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line397"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_compile</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line398"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line399"><br/></div><div id="line400"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$vals</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">NULL</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line401"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line402"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$vals</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">array_merge</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getValues</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getWhereValues</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line403"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line404"><br/></div><div id="line405"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$startTime</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">microtime</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">TRUE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line406"><br/></div><div id="line407"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$res</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$vals</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line408"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">query</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line409"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">prepareExecute</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$vals</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line410"><br/></div><div id="line411"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$endTime</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">microtime</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">TRUE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line412"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$totalTime</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">number_format</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$endTime</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_MINUS">-</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$startTime</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_LNUMBER">5</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line413"><br/></div><div id="line414"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Add this query to the list of executed queries</span></pre></div><div id="line415"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_appendQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$vals</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_INT_CAST">(int)</span><span class="token T_VARIABLE">$totalTime</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line416"><br/></div><div id="line417"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Reset class state for next query</span></pre></div><div id="line418"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$reset</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line419"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line420"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">resetQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line421"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line422"><br/></div><div id="line423"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$res</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line424"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line425"><br/></div><div id="line426"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line427"><pre><span class="token T_DOC_COMMENT"> * Convert the prepared statement into readable sql</span></pre></div><div id="line428"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line429"><pre><span class="token T_DOC_COMMENT"> * @param array $values</span></pre></div><div id="line430"><pre><span class="token T_DOC_COMMENT"> * @param string $sql</span></pre></div><div id="line431"><pre><span class="token T_DOC_COMMENT"> * @param int $totalTime</span></pre></div><div id="line432"><pre><span class="token T_DOC_COMMENT"> * @return void</span></pre></div><div id="line433"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line434"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_appendQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_ARRAY">array</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">int</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$totalTime</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">void</span></pre></div><div id="line435"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line436"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$evals</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">is_array</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$values</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$values</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line437"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$esql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">str_replace</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">'?'</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'%s'</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line438"><br/></div><div id="line439"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Quote string values</span></pre></div><div id="line440"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$evals</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_AMPERSAND">&</span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line441"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line442"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$v</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EXCLAMATION_MARK">!</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">is_numeric</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line443"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">htmlentities</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quote</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">ENT_NOQUOTES</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'utf-8'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line444"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line445"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line446"><pre><span class="token T_WHITESPACE"> </span><span class="token T_UNSET">unset</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$v</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line447"><br/></div><div id="line448"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Add the query onto the array of values to pass</span></pre></div><div id="line449"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// as arguments to sprintf</span></pre></div><div id="line450"><pre><span class="token T_WHITESPACE"> </span><span class="token T_STRING">array_unshift</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$evals</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$esql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line451"><br/></div><div id="line452"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Add the interpreted query to the list of executed queries</span></pre></div><div id="line453"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">queries</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span></pre></div><div id="line454"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'time'</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$totalTime</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line455"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'sql'</span><span class="token T_WHITESPACE"> </span><span class="token T_DOUBLE_ARROW">=></span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">sprintf</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_ELLIPSIS">...</span><span class="token T_VARIABLE">$evals</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line456"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line457"><br/></div><div id="line458"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">queries</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_CONSTANT_ENCAPSED_STRING">'total_time'</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_PLUS_EQUAL">+=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$totalTime</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line459"><br/></div><div id="line460"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Set the last query to get rowcounts properly</span></pre></div><div id="line461"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">setLastQuery</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line462"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line463"><br/></div><div id="line464"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line465"><pre><span class="token T_DOC_COMMENT"> * Sub-method for generating sql strings</span></pre></div><div id="line466"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line467"><pre><span class="token T_DOC_COMMENT"> * @codeCoverageIgnore</span></pre></div><div id="line468"><pre><span class="token T_DOC_COMMENT"> * @param string $type</span></pre></div><div id="line469"><pre><span class="token T_DOC_COMMENT"> * @param string $table</span></pre></div><div id="line470"><pre><span class="token T_DOC_COMMENT"> * @return string</span></pre></div><div id="line471"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line472"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_compileType</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">SELECT</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span></pre></div><div id="line473"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line474"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$setArrayKeys</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSetArrayKeys</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line475"><pre><span class="token T_WHITESPACE"> </span><span class="token T_SWITCH">switch</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line476"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line477"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">INSERT</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line478"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$paramCount</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">count</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$setArrayKeys</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line479"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$params</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">array_fill</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_LNUMBER">0</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$paramCount</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'?'</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line480"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">INSERT INTO </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE"> (</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span></pre></div><div id="line481"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">implode</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">','</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$setArrayKeys</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line482"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">")\nVALUES ("</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">implode</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">','</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$params</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">')'</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line483"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line484"><br/></div><div id="line485"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">UPDATE</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line486"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$setString</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSetString</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line487"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">UPDATE </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_ENCAPSED_AND_WHITESPACE">\nSET </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$setString</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line488"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line489"><br/></div><div id="line490"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">DELETE</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line491"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">DELETE FROM </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line492"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line493"><br/></div><div id="line494"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">SELECT</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line495"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DEFAULT">default</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line496"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$fromString</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getFromString</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line497"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$selectString</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSelectString</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line498"><br/></div><div id="line499"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_ENCAPSED_AND_WHITESPACE">SELECT * \nFROM </span><span class="token T_CURLY_OPEN">{</span><span class="token T_VARIABLE">$fromString</span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_PHPDOX_DOUBLE_QUOTES">"</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line500"><br/></div><div id="line501"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Set the select string</span></pre></div><div id="line502"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EXCLAMATION_MARK">!</span><span class="token T_WHITESPACE"> </span><span class="token T_EMPTY">empty</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$selectString</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line503"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line504"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Replace the star with the selected fields</span></pre></div><div id="line505"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">str_replace</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_CONSTANT_ENCAPSED_STRING">'*'</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$selectString</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line506"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line507"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line508"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line509"><br/></div><div id="line510"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line511"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line512"><br/></div><div id="line513"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line514"><pre><span class="token T_DOC_COMMENT"> * String together the sql statements for sending to the db</span></pre></div><div id="line515"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line516"><pre><span class="token T_DOC_COMMENT"> * @param string $type</span></pre></div><div id="line517"><pre><span class="token T_DOC_COMMENT"> * @param string $table</span></pre></div><div id="line518"><pre><span class="token T_DOC_COMMENT"> * @return string</span></pre></div><div id="line519"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line520"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_compile</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$table</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span></pre></div><div id="line521"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line522"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Get the base clause for the query</span></pre></div><div id="line523"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_compileType</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">quoteTable</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$table</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line524"><br/></div><div id="line525"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$clauses</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_SQUARE">[</span></pre></div><div id="line526"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'queryMap'</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line527"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'groupString'</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line528"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'orderString'</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line529"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'havingMap'</span><span class="token T_PHPDOX_COMMA">,</span></pre></div><div id="line530"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line531"><br/></div><div id="line532"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Set each type of subclause</span></pre></div><div id="line533"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$clauses</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$clause</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line534"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line535"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$func</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'get'</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">ucFirst</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$clause</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line536"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$param</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_VARIABLE">$func</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line537"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">is_array</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$param</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line538"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line539"><pre><span class="token T_WHITESPACE"> </span><span class="token T_FOREACH">foreach</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$param</span><span class="token T_WHITESPACE"> </span><span class="token T_AS">as</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$q</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line540"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line541"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_CONCAT_EQUAL">.=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$q</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_CONSTANT_ENCAPSED_STRING">'conjunction'</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_DOT">.</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$q</span><span class="token T_PHPDOX_OPEN_SQUARE">[</span><span class="token T_CONSTANT_ENCAPSED_STRING">'string'</span><span class="token T_PHPDOX_CLOSE_SQUARE">]</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line542"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line543"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span><span class="token T_WHITESPACE"> </span><span class="token T_ELSE">else</span></pre></div><div id="line544"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line545"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_CONCAT_EQUAL">.=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$param</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line546"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line547"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line548"><br/></div><div id="line549"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Set the limit via the class variables</span></pre></div><div id="line550"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$limit</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getLimit</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line551"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">is_numeric</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$limit</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line552"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line553"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSql</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">limit</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$limit</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getOffset</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line554"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line555"><br/></div><div id="line556"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Set the returning clause, if applicable</span></pre></div><div id="line557"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">_compileReturning</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line558"><br/></div><div id="line559"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// See if the query plan, rather than the</span></pre></div><div id="line560"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// query data should be returned</span></pre></div><div id="line561"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">explain</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">TRUE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line562"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line563"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSql</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">explain</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line564"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line565"><br/></div><div id="line566"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line567"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line568"><br/></div><div id="line569"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DOC_COMMENT">/**</span></pre></div><div id="line570"><pre><span class="token T_DOC_COMMENT"> * Generate returning clause of query</span></pre></div><div id="line571"><pre><span class="token T_DOC_COMMENT"> *</span></pre></div><div id="line572"><pre><span class="token T_DOC_COMMENT"> * @param string $sql</span></pre></div><div id="line573"><pre><span class="token T_DOC_COMMENT"> * @param string $type</span></pre></div><div id="line574"><pre><span class="token T_DOC_COMMENT"> * @return string</span></pre></div><div id="line575"><pre><span class="token T_DOC_COMMENT"> */</span></pre></div><div id="line576"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PROTECTED">protected</span><span class="token T_WHITESPACE"> </span><span class="token T_FUNCTION">function</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">_compileReturning</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">string</span></pre></div><div id="line577"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line578"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">returning</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">FALSE</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line579"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line580"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line581"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line582"><br/></div><div id="line583"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$rawSelect</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">state</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">getSelectString</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line584"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$selectString</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$rawSelect</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">''</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_QUESTION_MARK">?</span><span class="token T_WHITESPACE"> </span><span class="token T_CONSTANT_ENCAPSED_STRING">'*'</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_COLON">:</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$rawSelect</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line585"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$returningSQL</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EQUAL">=</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">driver</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">returning</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_COMMA">,</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$selectString</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line586"><br/></div><div id="line587"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$returningSQL</span><span class="token T_WHITESPACE"> </span><span class="token T_IS_IDENTICAL">===</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$sql</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line588"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line589"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// If the driver doesn't support the returning clause, it returns the original query.</span></pre></div><div id="line590"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Fake the same result with a transaction and a select query</span></pre></div><div id="line591"><pre><span class="token T_WHITESPACE"> </span><span class="token T_IF">if</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_EXCLAMATION_MARK">!</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">inTransaction</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line592"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line593"><pre><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$this</span><span class="token T_OBJECT_OPERATOR">-></span><span class="token T_STRING">beginTransaction</span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line594"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line595"><br/></div><div id="line596"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// Generate the appropriate select query for the returning clause fallback</span></pre></div><div id="line597"><pre><span class="token T_WHITESPACE"> </span><span class="token T_SWITCH">switch</span><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_BRACKET">(</span><span class="token T_VARIABLE">$type</span><span class="token T_PHPDOX_CLOSE_BRACKET">)</span></pre></div><div id="line598"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_OPEN_CURLY">{</span></pre></div><div id="line599"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">INSERT</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line600"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// @TODO figure out a good response for insert query</span></pre></div><div id="line601"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line602"><br/></div><div id="line603"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">UPDATE</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line604"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// @TODO figure out a good response for update query</span></pre></div><div id="line605"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line606"><br/></div><div id="line607"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">INSERT_BATCH</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line608"><pre><span class="token T_WHITESPACE"> </span><span class="token T_CASE">case</span><span class="token T_WHITESPACE"> </span><span class="token T_STRING">QueryType</span><span class="token T_DOUBLE_COLON">::</span><span class="token T_STRING">UPDATE_BATCH</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line609"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// @TODO figure out a good response for batch queries</span></pre></div><div id="line610"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line611"><br/></div><div id="line612"><pre><span class="token T_WHITESPACE"> </span><span class="token T_DEFAULT">default</span><span class="token T_PHPDOX_COLON">:</span></pre></div><div id="line613"><pre><span class="token T_WHITESPACE"> </span><span class="token T_COMMENT">// On Delete queries, what would we return?</span></pre></div><div id="line614"><pre><span class="token T_WHITESPACE"> </span><span class="token T_BREAK">break</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line615"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line616"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line617"><br/></div><div id="line618"><pre><span class="token T_WHITESPACE"> </span><span class="token T_RETURN">return</span><span class="token T_WHITESPACE"> </span><span class="token T_VARIABLE">$returningSQL</span><span class="token T_PHPDOX_SEMICOLON">;</span></pre></div><div id="line619"><pre><span class="token T_WHITESPACE"> </span><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div><div id="line620"><pre><span class="token T_PHPDOX_CLOSE_CURLY">}</span></pre></div></td></tr></table></section></div><footer><span>Generated using phpDox 0.12.0-dev - Copyright (C) 2010 - 2020 by Arne Blankerts and Contributors</span></footer></body></html>
|