上次我們了解了如何查詢模型數據,今天我們來看看如何創建一個模型,
使用save創建模型
save方法很簡單,看一個例子就明白了:
// 創建一個模型 $article = new \App\Models\Article(); // 設置模型的值 $article->title = '標題'; $article->id = 60; $article->content = '一些內容'; $article->author = 'larger K'; if ($article->save()){ echo '添加成功'; }else{ echo '添加失敗'; }
這樣就可以創建一個模型 並把數據插入了數據庫中,save方法也可以接受一個關聯數組,再次就不做演示了。
批量賦值--create方法
這是我們最常使用的一種方法,因為它相比較於save更加簡潔方便,create方法是批量賦值的,如果要使用批量賦值 需要在模型中聲明白名單(fillable)或黑名單(guarded),當然 我們可以只聲明白名單或只聲明黑名單即可,因為非黑即白。
- fillable數組:聲明有哪些屬性是可以批量賦值的。
- guarded數組:聲明哪些數組是不可以批量賦值的。
class Article extends Model { // 聲明哪些屬性是可以批量賦值的 protected $fillable = ['title','content','author']; }
如果我們在某種情況下不得不修改白名單以外(即黑名單)的屬性 那怎么辦呢? 這時我們只能使用save方法了。
下面我們來模擬一個環境,我們需要接受html表單提交過來的數據 並創建模型 插入數據庫:
public function store(Request $request) { // 表單數據都在 Request中 關於Request以后會普及到 Article::create($request->all()); }
上面的例子只需要一行代碼就可以完成插入工作。
使用save進行更新數據
save方法不僅僅可以插入數據,也可以更新數據:
// 首先通過id查找數據 $article = \App\Models\Article::findOrFail(60); // 設置要更新的值 $article->title = '新的標題'; $article->id = 21; $article->content = '新的內容'; $article->author = 'ASK'; if ($article->save()){ echo '更新成功'; }else{ echo '更新失敗'; }
批量賦值--update
相對應create而言,另一個批量賦值是專門用來更新的方法:update,update也是批量賦值方法 需要注意白名單和黑名單
public function update(Request $request, $id) { // 獲取模型數據 $article = Article::findOrFail($id); $article->update($request->all()); }
更加簡潔。