如何使用Laravel5.1 框架創(chuàng)建模型?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元千山做網(wǎng)站,已為上家服務(wù),為千山各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220創(chuàng)建模型是可以使用Artisan控制臺的:
php artisan make:model Article
一般我比較喜歡連帶著migration一起生成:
php artisan make:model Article -m
↑ 執(zhí)行了上面的Artisan命令后 我們就可以在 /app 下找到我們剛剛創(chuàng)建的模型了,順便也生成好了migration。
一個model對應(yīng)一個表,model對應(yīng)的表名默認是model名字的復(fù)數(shù) 即:Article(Model)對應(yīng)Articles(Table),User(Model)對應(yīng)Users(Table)。
當(dāng)然 如果你的Model不想用這種默認方式 也可以自定義:
class Article extends Model { protected $table = 'K_Articles'; }
Model的主鍵默認是id,你也可以自定義:
class Article extends Model { protected $primaryKey = 'article_id'; }
在咱的數(shù)據(jù)表之中 有create_at 和 update_at 兩個時間戳 是Laravel自動管理的,如果你不想要自動管理這兩個列 可以這樣做:
class Article extends Model { public $timestamps = false; }
當(dāng)我們用到批量創(chuàng)建和批量修改時 必須聲明黑名單或白名單,在白名單中的屬性是可以填充的屬性,在黑名單中的屬性是不允許被填充的屬性:
class Article extends Model { protected $fillable = ['title', 'body']; }
注意:不知道怎么用沒關(guān)系,3.2我們就會說批量創(chuàng)建。
創(chuàng)建模型有兩種方法,第一種就是普通的創(chuàng)建,第二種是批量創(chuàng)建。
普通創(chuàng)建就是新建一個模型:
public function getCreateArticle() { $article = new Article(); $article->title = 'One'; $article->body = 'Learn Laravel Model'; $article->save(); }
批量賦值就是使用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)建模型,有個細節(jié)哈 我們在fillable中沒有添加comment_count 但是create方法中的數(shù)組有comment_count的鍵值。。。結(jié)果呢 comment_count并沒有被填充,原因是:它不在白名單中 或者 它在黑名單中。
更新跟插入很像,也有兩種方法 普通的 和 批量的。
public function getUpdateArticle() { $article = Article::find(1); $article->title = 'Article_One'; $article->save(); }
public function getUpdateArticle() { $article = Article::find(3); $article->update(['title' => 'Three', 'body' => 'Third']); }
其實Model的查找跟之前我們學(xué)過的構(gòu)建器很像。
public function getIndex() { $articles = Article::all(); foreach ($articles as $article) { echo $article->title . '
'; echo $article->body . '
'; } }
使用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)未取到值是自動報錯 應(yīng)對這種場景 也可以使用findOrFail:
public function getIndex() { $article = Article::findOrFail(2); dd($article); }
這就是和構(gòu)建器相似的地方,你可以像約束構(gòu)建器一樣約束它 這里就不多說了 給了例子吧:
public function getIndex() { $article = Article::where('id','>',2)->orderBy('comment_count','desc')->lists('title')->toArray(); dd($article); }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。