<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                <article><h1>Laravel 數據庫之:數據填充</h1><ul><li><a href="#introduction">簡介</a></li><li><a href="#writing-seeders">編寫 Seeders</a><ul><li><a href="#using-model-factories">使用模型工廠</a></li><li><a href="#calling-additional-seeders">調用其他 Seeders</a></li></ul></li><li><a href="#running-seeders">運行 Seeders</a></li></ul><p><a name="introduction"></a></p><h2><a href="#introduction">簡介</a></h2><p>Laravel 可以用 seed 類輕松地為數據庫填充測試數據。所有的 seed 類都存放在 <code class=" language-php">database<span class="token operator">/</span>seeds</code> 目錄下。你可以任意為 seed 類命名,但是應該遵守類似 <code class=" language-php">UsersTableSeeder</code> 的命名規范。Laravel 默認定義了一個 <code class=" language-php">DatabaseSeeder</code> 類。可以在這個類中使用 <code class=" language-php">call</code> 方法來運行其它的 seed 類來控制數據填充的順序。</p><p><a name="writing-seeders"></a></p><h2><a href="#writing-seeders">編寫 Seeders</a></h2><p>可以通過運行 <code class=" language-php">make<span class="token punctuation">:</span>seeder</code> <a href="/docs/5.4/artisan">Artisan 命令</a> 來生成一個 Seeder。所有由框架生成的 seeders 都將被放置在 <code class=" language-php">database<span class="token operator">/</span>seeds</code> 目錄下:</p><pre class=" language-php"><code class=" language-php">php artisan make<span class="token punctuation">:</span>seeder UsersTableSeeder</code></pre><p>一個 seeder 類只包含一個默認方法:<code class=" language-php">run</code>。這個方法在 <code class=" language-php">db<span class="token punctuation">:</span>seed</code> <a href="/docs/5.4/artisan">Artisan 命令</a> 被調用時執行。在 <code class=" language-php">run</code> 方法里你可以為數據庫添加任何數據。你也可以用 <a href="/docs/5.4/queries">查詢語句構造器</a> 或 <a href="/docs/5.4/database-testing#writing-factories">Eloquent 模型工廠</a> 來手動添加數據。</p><p>如下所示,我們來修改默認的 <code class=" language-php">DatabaseSeeder</code> 類并為 <code class=" language-php">run</code> 方法添加一條數據庫插入語句:</p><pre class=" language-php"><code class=" language-php"><span class="token delimiter">&lt;?php</span> <span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Database<span class="token punctuation">\</span>Seeder</span><span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Database<span class="token punctuation">\</span>Eloquent<span class="token punctuation">\</span>Model</span><span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">DatabaseSeeder</span> <span class="token keyword">extends</span> <span class="token class-name">Seeder</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/** * 運行數據庫填充 * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">run<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token scope">DB<span class="token punctuation">::</span></span><span class="token function">table<span class="token punctuation">(</span></span><span class="token string">'users'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">insert<span class="token punctuation">(</span></span><span class="token punctuation">[</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token function">str_random<span class="token punctuation">(</span></span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'email'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token function">str_random<span class="token punctuation">(</span></span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token string">'@gmail.com'</span><span class="token punctuation">,</span> <span class="token string">'password'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token function">bcrypt<span class="token punctuation">(</span></span><span class="token string">'secret'</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><p><a name="using-model-factories"></a></p><h3>使用模型工廠</h3><p>當然,手動為每個模型填充指定屬性很麻煩。作為替代方案,你可以使用 <a href="/docs/5.4/database-testing#writing-factories">模型工廠</a> 來輕松地生成大量數據庫記錄。首先,閱讀 <a href="/docs/5.4/database-testing#writing-factories">模型工廠文檔</a> 來學習如何定義工廠。一旦定義了工廠,就可以使用 <code class=" language-php">factory</code> 這個輔助函數來向數據庫中添加記錄。</p><p>如下所示,我們來創建 50 個用戶并為每個用戶創建關聯:</p><pre class=" language-php"><code class=" language-php"><span class="token comment" spellcheck="true">/** * 運行數據庫填充 * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">run<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">factory<span class="token punctuation">(</span></span><span class="token scope">App<span class="token punctuation">\</span>User<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">create<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">each<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$u</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$u</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">posts<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">save<span class="token punctuation">(</span></span><span class="token function">factory<span class="token punctuation">(</span></span><span class="token scope">App<span class="token punctuation">\</span>Post<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">make<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre><p><a name="calling-additional-seeders"></a></p><h3>調用其他 Seeders</h3><p>在 <code class=" language-php">DatabaseSeeder</code> 類中,你可以使用 <code class=" language-php">call</code> 方法來運行其他的 seed 類。為避免單個 seeder 類過大,可使用 <code class=" language-php">call</code> 方法將數據填充拆分成多個文件。只需簡單傳遞要運行的 seeder 類名稱即可:</p><pre class=" language-php"><code class=" language-php"><span class="token comment" spellcheck="true">/** * 運行數據庫填充 * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">run<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token this">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">call<span class="token punctuation">(</span></span><span class="token scope">UsersTableSeeder<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token this">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">call<span class="token punctuation">(</span></span><span class="token scope">PostsTableSeeder<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token this">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">call<span class="token punctuation">(</span></span><span class="token scope">CommentsTableSeeder<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre><p><a name="running-seeders"></a></p><h2><a href="#running-seeders">運行 Seeders</a></h2><p>一旦完成了 seeder 類的編寫,就可以使用 <code class=" language-php">db<span class="token punctuation">:</span>seed</code> 這個 Artisan 命令來填充數據庫。在默認情況下,<code class=" language-php">db<span class="token punctuation">:</span>seed</code> 命令將運行可以用來調用其他填充類的 <code class=" language-php">DatabaseSeeder</code> 類。但是可以用 <code class=" language-php"><span class="token operator">--</span><span class="token keyword">class</span></code> 選項來單獨運行一個特定的 seeder 類:</p><pre class=" language-php"><code class=" language-php">php artisan db<span class="token punctuation">:</span>seed php artisan db<span class="token punctuation">:</span>seed <span class="token operator">--</span><span class="token keyword">class</span><span class="token operator">=</span>UsersTableSeeder</code></pre><p>也可以使用會先回滾再重新運行所有遷移的 <code class=" language-php">migrate<span class="token punctuation">:</span>refresh</code> 命令來填充數據庫。這個命令在徹底重構數據庫時非常有用:</p><pre class=" language-php"><code class=" language-php">php artisan migrate<span class="token punctuation">:</span>refresh <span class="token operator">--</span>seed</code></pre><h2>譯者署名</h2><table><thead><tr><th>用戶名</th><th>頭像</th><th>職能</th><th>簽名</th></tr></thead><tbody><tr><td><a href="https://github.com/houfei">@houfei</a></td><td><img class="avatar-66 rm-style" src="https://dn-phphub.qbox.me/uploads/avatars/3472_1452945992.jpeg?imageView2/1/w/100/h/100"></td><td>翻譯</td><td>玩咖啡 &amp; 鏟屎奴 &amp; 努力回頭做碼農 <a href="https://github.com/houfei">@houfei</a> at Github</td></tr></tbody></table></article>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看