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方法沒這種效果)
待續。。