Laravel5.1 框架模型創(chuàng)建與使用方法實(shí)例分析
本文實(shí)例講述了Laravel5.1 框架模型創(chuàng)建與使用方法。分享給大家供大家參考,具體如下:
Laravel的模型也是訪問數(shù)據(jù)庫的,它更加面向?qū)ο螅粋€模型對應(yīng)著一張表 我們可以使用模型對數(shù)據(jù)做一些增刪改查的操作。
1 創(chuàng)建模型
創(chuàng)建模型是可以使用Artisan控制臺的:
php artisan make:model Article
一般我比較喜歡連帶著migration一起生成:
php artisan make:model Article -m
↑ 執(zhí)行了上面的Artisan命令后 我們就可以在 /app 下找到我們剛剛創(chuàng)建的模型了,順便也生成好了migration。
2 模型常用屬性
2.1 自定義表名
一個model對應(yīng)一個表,model對應(yīng)的表名默認(rèn)是model名字的復(fù)數(shù) 即:Article(Model)對應(yīng)Articles(Table),User(Model)對應(yīng)Users(Table)。
當(dāng)然 如果你的Model不想用這種默認(rèn)方式 也可以自定義:
class Article extends Model { protected $table = 'K_Articles'; }
2.2 自定義主鍵
Model的主鍵默認(rèn)是id,你也可以自定義:
class Article extends Model { protected $primaryKey = 'article_id'; }
2.3 時間戳
在咱的數(shù)據(jù)表之中 有create_at 和 update_at 兩個時間戳 是Laravel自動管理的,如果你不想要自動管理這兩個列 可以這樣做:
class Article extends Model { public $timestamps = false; }
2.4 白名單和黑名單
當(dāng)我們用到批量創(chuàng)建和批量修改時 必須聲明黑名單或白名單,在白名單中的屬性是可以填充的屬性,在黑名單中的屬性是不允許被填充的屬性:
class Article extends Model { protected $fillable = ['title', 'body']; }
注意:不知道怎么用沒關(guān)系,3.2我們就會說批量創(chuàng)建。
3 創(chuàng)建數(shù)據(jù)(模型)
創(chuàng)建模型有兩種方法,第一種就是普通的創(chuàng)建,第二種是批量創(chuàng)建。
3.1 普通創(chuàng)建模型
普通創(chuàng)建就是新建一個模型:
public function getCreateArticle() { $article = new Article(); $article->title = 'One'; $article->body = 'Learn Laravel Model'; $article->save(); }
3.2 批量創(chuàng)建
批量賦值就是使用create方法來生成一個model并返回這個新插入的model,在你使用create前必須檢查model中是否聲明了黑名單或白名單:
class Article extends Model { protected $fillable = ['title', 'body']; }
↑ 這是我們的白名單
public function getCreateArticle() { $article = Article::create(['title'=>'Two', 'body'=>'Test Create Model', 'comment_count'=>10]); }
↑ 這是批量創(chuàng)建模型,有個細(xì)節(jié)哈 我們在fillable中沒有添加comment_count 但是create方法中的數(shù)組有comment_count的鍵值。。。結(jié)果呢 comment_count并沒有被填充,原因是:它不在白名單中 或者 它在黑名單中。
4 更新
更新跟插入很像,也有兩種方法 普通的 和 批量的。
4.1 普通更新
public function getUpdateArticle() { $article = Article::find(1); $article->title = 'Article_One'; $article->save(); }
4.2 批量更新
public function getUpdateArticle() { $article = Article::find(3); $article->update(['title' => 'Three', 'body' => 'Third']); }
5 查找
其實(shí)Model的查找跟之前我們學(xué)過的構(gòu)建器很像。
5.1 獲取全部的模型
public function getIndex() { $articles = Article::all(); foreach ($articles as $article) { echo $article->title . '<br />'; echo $article->body . '<br />'; } }
5.2 獲取單個模型
使用find 通過主鍵查找:
public function getIndex() { $article = Article::find(1); dd($article->body); }
我們也可以判斷是否取到了Model:
public function getIndex() { $article = Article::find(2); if (!isset($article)){ abort(404,'Not Found'); } dd($article); }
當(dāng)未取到值是自動報(bào)錯 應(yīng)對這種場景 也可以使用findOrFail:
public function getIndex() { $article = Article::findOrFail(2); dd($article); }
5.3 通過約束獲取模型
這就是和構(gòu)建器相似的地方,你可以像約束構(gòu)建器一樣約束它 這里就不多說了 給了例子吧:
public function getIndex() { $article = Article::where('id','>',2)->orderBy('comment_count','desc')->lists('title')->toArray(); dd($article); }
先寫這么多,下一篇說下Model的刪除功能。
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
- 在laravel中實(shí)現(xiàn)ORM模型使用第二個數(shù)據(jù)庫設(shè)置
- 使用laravel的Eloquent模型如何獲取數(shù)據(jù)庫的指定列
- Laravel5.1 框架關(guān)聯(lián)模型之后操作實(shí)例分析
- Laravel5.1 框架模型多態(tài)關(guān)聯(lián)用法實(shí)例分析
- Laravel5.1 框架模型遠(yuǎn)層一對多關(guān)系實(shí)例分析
- Laravel5.1 框架模型一對一關(guān)系實(shí)現(xiàn)與使用方法實(shí)例分析
- Laravel5.1 框架模型查詢作用域定義與用法實(shí)例分析
- Laravel5.1 框架模型軟刪除操作實(shí)例分析
- Laravel框架視圖和模型操作方法分析
- Laravel 5框架學(xué)習(xí)之模型、控制器、視圖基礎(chǔ)流程
- laravel學(xué)習(xí)教程之關(guān)聯(lián)模型
- laravel框架模型和數(shù)據(jù)庫基礎(chǔ)操作實(shí)例詳解
相關(guān)文章
PHP中把對象數(shù)組轉(zhuǎn)換成普通數(shù)組的方法
這篇文章主要介紹了PHP中把對象數(shù)組轉(zhuǎn)成普通數(shù)組的方法,本文直接給出示例代碼,需要的朋友可以參考下2015-07-07thinkPHP+ajax實(shí)現(xiàn)統(tǒng)計(jì)頁面pv瀏覽量的方法
這篇文章主要介紹了thinkPHP+ajax實(shí)現(xiàn)統(tǒng)計(jì)頁面pv瀏覽量的方法,涉及thinkPHP模板調(diào)用及數(shù)據(jù)庫讀寫相關(guān)操作技巧,需要的朋友可以參考下2017-03-03使用YII2框架實(shí)現(xiàn)微信公眾號中表單提交功能
剛剛接觸微信就要做一個表單提交功能,需求是這樣的只能在數(shù)據(jù)庫中存在的手機(jī)號看到表單。下面通過本文給大家分享使用YII2框架實(shí)現(xiàn)微信公眾號中表單提交功能,感興趣的朋友一起看看吧2017-09-09探討:array2xml和xml2array以及xml與array的互相轉(zhuǎn)化
本篇文章是對array2xml和xml2array以及xml與array的互相轉(zhuǎn)化進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06微信公眾號實(shí)現(xiàn)掃碼獲取微信用戶信息(網(wǎng)頁授權(quán))
剛開始接觸微信的時候一頭霧水,領(lǐng)導(dǎo)想要一個掃碼獲取微信用戶信息的功能,接下來通過本文給大家分享微信公眾號實(shí)現(xiàn)掃碼獲取微信用戶信息(網(wǎng)頁授權(quán)),需要的朋友可以參考下2019-04-04laravel-admin解決表單select聯(lián)動時,編輯默認(rèn)沒選上的問題
今天小編就為大家分享一篇laravel-admin解決表單select聯(lián)動時,編輯默認(rèn)沒選上的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09