<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 插入與更新 ### [](https://octobercms.com/docs/database/model#inserting-and-updating-models)插入和更新模型 插入和更新數據是模型的基石,與傳統的SQL語句相比,它使過程變得輕松。 ### [](https://octobercms.com/docs/database/model#basic-inserts)基本插入 要在數據庫中創建新記錄,只需創建一個新的模型實例,在模型上設置屬性,然后調用該`save`方法: ~~~ $flight = new Flight; $flight->name = 'Sydney to Canberra'; $flight->save(); ~~~ 在此示例中,我們僅創建`Flight`模型的新實例并分配`name`屬性。當我們調用該`save`方法時,一條記錄將被插入數據庫中。在`created_at`和`updated_at`時間戳將自動設置太多,所以沒有必要進行手動設置。 ### [](https://octobercms.com/docs/database/model#basic-updates)基本更新 該`save`方法還可以用于更新數據庫中已經存在的模型。要更新模型,您應該檢索它,設置要更新的任何屬性,然后調用該`save`方法。同樣,`updated_at`時間戳將自動更新,因此無需手動設置其值: ~~~ $flight = Flight::find(1); $flight->name = 'Darwin to Adelaide'; $flight->save(); ~~~ 還可以針對與給定查詢匹配的任何數量的模型執行更新。在這個例子中,所有的航班`active`,有一個`destination`的`San Diego`將被標記為延遲: ~~~ Flight::where('is_active', true) ->where('destination', 'Perth') ->update(['delayed' => true]); ~~~ 該`update`方法需要一個列和值對的數組,這些數組代表應該更新的列。 #### 更新或插入/`upsert()`(批處理查詢以在一個數據庫調用中處理多行) 如果您想在單個查詢中執行多個“ upserts”,則應改用該`upsert`方法。該方法的第一個參數由要插入或更新的值組成,而第二個參數列出了唯一標識關聯表中的記錄的列。該方法的第三個也是最后一個參數是列的數組,如果數據庫中已經存在匹配的記錄,則應更新這些列。如果在模型上啟用了時間戳,則該`upsert`方法將自動設置`created_at`和`updated_at`時間戳: ~~~ MyVendor\MyPlugin\Models\Flight::upsert([ ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99], ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150] ], ['departure', 'destination'], ['price']); ~~~ > **注意::**除SQL Server以外,所有數據庫均要求該`upsert`方法第二個參數中的列具有“主”或“唯一”索引。 ### [](https://octobercms.com/docs/database/model#mass-assignment)批量分配 您也可以使用該`create`方法在一行中保存新模型。插入的模型實例將從該方法返回給您。但是,在執行此操作之前,您需要在模型上指定a`fillable`或`guarded`屬性,因為所有模型都可以防止大規模分配。請注意,無論是`fillable`或`guarded`影響提交后端的形式,只使用`create`或`fill`方法。 當用戶通過請求傳遞意外的HTTP參數,并且該參數更改了數據庫中您沒有期望的列時,就會發生批量分配漏洞。例如,惡意用戶可能`is_admin`通過HTTP請求發送參數,然后將該參數映射到模型的`create`方法上,從而使該用戶可以升級為管理員。 首先,您應該定義要批量分配的模型屬性。您可以使用`$fillable`模型上的屬性來執行此操作。例如,讓我們使模型的`name`屬性`Flight`可分配: ~~~ class Flight extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['name']; } ~~~ 一旦使屬性可大規模分配,就可以使用該`create`方法在數據庫中插入新記錄。該`create`方法返回保存的模型實例: ~~~ $flight = Flight::create(['name' => 'Flight 10']); ~~~ 雖然`$fillable`它是應該批量分配的屬性“白名單”,但您也可以選擇使用`$guarded`。該`$guarded`屬性應包含您不希望被大量分配的屬性數組。不在數組中的所有其他屬性將可批量分配。因此,`$guarded`功能類似于“黑名單”。當然,您應該使用`$fillable`或`$guarded`不使用以下兩者之一: ~~~ class Flight extends Model { /** * The attributes that aren't mass assignable. * * @var array */ protected $guarded = ['price']; } ~~~ 在上面的示例中,**除以外的`price`**所有屬性**都是**可批量分配的。 #### 其他創作方法 有時您可能只希望實例化模型的新實例。您可以使用`make`方法執行此操作。該`make`方法將簡單地返回一個新實例,而不保存或創建任何東西。 ~~~ $flight = Flight::make(['name' => 'Flight 10']); // Functionally the same as... $flight = new Flight; $flight->fill(['name' => 'Flight 10']); ~~~ 通過批量分配屬性,可以使用兩種其他方法來創建模型:`firstOrCreate`和`firstOrNew`。該`firstOrCreate`方法將嘗試使用給定的列/值對查找數據庫記錄。如果在數據庫中找不到模型,則將插入具有給定屬性的記錄。 該`firstOrNew`方法`firstOrCreate`將嘗試在數據庫中找到與給定屬性匹配的記錄。但是,如果找不到模型,則將返回新的模型實例。請注意,所返回的模型`firstOrNew`尚未持久化到數據庫中。您將需要`save`手動調用以保留它: ~~~ // Retrieve the flight by the attributes, otherwise create it $flight = Flight::firstOrCreate(['name' => 'Flight 10']); // Retrieve the flight by the attributes, or instantiate a new instance $flight = Flight::firstOrNew(['name' => 'Flight 10']); ~~~
                  <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>

                              哎呀哎呀视频在线观看