Eloquent ORM 快速指南

文章推薦指數: 80 %
投票人數:10人

Eloquent ORM 快速指南![](https://i.imgur.com/XdzoHHz.png) ## DB Facade vs Eloquent 當要進行複雜的原生SQL語.       Published LinkedwithGitHub Like Bookmark Subscribe --- tags:laravel --- #EloquentORM快速指南 ![](https://i.imgur.com/XdzoHHz.png) ##DBFacadevsEloquent 當要進行複雜的原生SQL語法查詢才建議你使用DBFacade,否則一般狀況下還是使用Eloquent來進行查詢為好 DBFacade查詢完得到的會是陣列,而Eloquent查詢完得到的則是Eloquent物件 如果需要把資料陣列轉換成Eloquent是做得到的,透過QueryBuilder的hydrate(),請看以下範例: ``` $userData=DB::select('SELECT*FROMusersWHEREid>?',[$userId]); $userModels=User::hydrate($userData); ``` ##ActiveRecordPattern 任何技術宣稱有實作ActiveRecord,須具備以下三個特性 *提供與資料表互動的能力 *可代表某一筆資料列 *可自我進行持久保存 ##Eloquent *有實作ActiveRecord,是一種ORM >ORM為ObjectRelationshipManagement,即用物件關聯的方式來管理資料庫 *透過定義模型的方式,讓你輕鬆管理資料庫 *一般每一個模型都指向一個表格 ##命名慣例 ###資料表格名稱 *包含多筆資料 *首字母小寫 *複數型 *Ex:users ###模型名稱 *代表一筆資料 *首字母大寫 *單數型 *Ex:User >不按照命名慣例就要做更多的設定做為代價 ##生成模型 生成Model類別 phpartisanmake:modelTask 生成Model類別,連帶生成對應的Migration檔案 phpartisanmake:modelTask-m ##Model進階屬性 ####指定該模型要對應的表格名稱,如果沒按照命名慣例才需要提供 protected$table='新表格名稱'; ####將自定義的timestamps欄位自動轉換成Carbon型態 protected$dates=['sell_at']; ####指定表格的自定義主鍵欄位名稱 protected$primaryKey='user_id'; ####關閉主鍵的自增功能 protected$incrmenting=false; ####呈上一個,如果主鍵不是int,就需要指定類型,比如字串 protected$keyType='string'; ####關閉created_at和updated_at的自動維護 protected$timestamps=false; ####設定date型態的欄位被存進資料庫時的格式 protected$dateFormat='U'; ####修改預設的時間戳記欄位名稱 constCREATED_AT='creation_date'; constUPDATED_AT='last_update'; ####此模型需要連到其他的資料庫 protected$connection='connection-name'; ##測試範例 ``` //routes/web.php Route::get('/tasks','SiteController@showTasks'); //App\Http\Controllers\SiteController publicfunctionshowTasks(){ returnresponse()->json(Task::get())->setEncodingOptions(JSON_UNESCAPED_UNICODE); } ``` × Signin Email Password Forgotpassword or Byclickingbelow,youagreetoourtermsofservice. SigninviaFacebook SigninviaTwitter SigninviaGitHub SigninviaDropbox SigninviaGoogle NewtoHackMD?Signup



請為這篇文章評分?