laravel Eloquent 模型(也就是我本時說的Model)


laravel的 Eloquent 模型其實就是我們平時說的MVC里Model,只是換了個名字而已~

 

1)Eloquent 是啥?

Eloquent 本質就一個查詢構建器(laravel里叫查詢構建器,想上面所說的一樣,它其實就是一個Model),所以它使用查詢構建器的所以方法,

如果你不知道laravel查詢構建器都有些什么方法,看這里:http://www.cnblogs.com/tujia/p/6292832.html

 

2)Eloquent 怎么用?

1、創建一個Eloquent 模型(生成的model方法位於app目錄下)

php artisan make:model Goods

 

2、指定一下Model綁定的數據表及表主鍵(如果不聲明表名及主鍵,默認的表名是model名字的復數,例如我這里的話,默認表名就成了Goodss了,默認主鍵是id

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Goods extends Model
{
    protected $table         = "goods";
    protected $primaryKey     = "goods_id";
    //
}

 

3、數據庫操作的話,這按之前的查詢構建器的寫法來就行了,不過這里不再是用的 DB::table('table_name') 了,直接用$this就行了,例如:

$goods = $this->where('goods_id', '1')->first();

當然,這時在Model里方法的寫法,在別的地方(例如控制器)調用Model的話,要實例化一個模型來調用

$goods = \App\Goods::where('goods_id', '1')->first();

如果我們需要通過模型查詢多次的話,先實例化一個模型並賦值給一個變量是一個不錯的選擇

$goodsModel = new \App\Goods();
$row        = $goodsModel->where('goods_id', $id)->first();
$count      = $goodsModel->count();

 

3)Eloquent 模型特有的方法

Eloquent 除了具備 “查詢構建器” 的所有功能(方法),它還自己的一些“更強大”的方法(DB::table不能使用的方法)

1、find 方法,find 方法可以查詢一行或多行

$goodsModel = \App\Goods();
$one        = $goodsModel->find(1);
$some       = $goodsModel->find([1,2,3,4]);

 

2、save 方法,save 方法具備 insert 方法和 update 方法的功能(記錄不存在時insert,記錄存在時update)

$model->save(
    ['email' => 'john@example.com', 'votes' => 0]
);

$model->save(
    ['id'=>1,'email' => 'john@example.com', 'votes' => 0]
);

更新時,需要提示數據表的主鍵字段,例如上面的id字段

PS:如果你在做數據遷移時,有設置到 $table->timestamps(),生成數據表時會有一個 created_at 字段 和 updated_at 字段,而使用save方法插入或更新記錄時,這兩個字段會被自動更新(使用insert和update方法沒這種效果)

 

待續。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM