導航:首頁 > 編程語言 > phpEloquent

phpEloquent

發布時間:2022-12-07 00:40:28

㈠ Eloquent 怎麼實現事務

零、什麼是 Eloquent Eloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',對象關系映射。ORM 的出現是為了幫我們把對資料庫的操作變得更加地方便。 Eloquent 讓一個 'Model類' 對應一張資料庫表,並且在底層封裝了很多 'function',可以讓 Model 類非常方便地調用。 來看一段如下代碼: <?php class Article extends \Eloquent { protected $fillable = []; } 'protected $fillable = [];' 這一行代碼在這里沒有任何價值,是 generator 自動生成的,在此我們不做討論。 這個類簡直再簡單不過了,沒有指定命名空間,沒有構造函數,如果那一行沒有意義的代碼也不算上的話,這個文件就只有兩個有實際意義的東西: 'Article' 和 '\Eloquent'。沒錯,Eloquent 就是這么屌炸天,只需要繼承一下 Eloquent 類,就可以干 'first() find() where() orderBy()' 等非常非常多的事情,這就是面向對象的強大威力。 一、Eloquent 基本用法 Eloquent 中文文檔在:laravel-china.org/docs/eloquent 廢話不多說,下面我將直接展示 Eloquent 的幾種常見用法的代碼。 找到 id 為 2 的文章列印其標題 $article = Article::find(2); echo $article->title; 查找標題為「我是標題」的文章,並列印 id $article = Article::where('title', '我是標題')->first(); echo $article->id; 查詢出所有文章並循環列印出所有標題 $articles = Article::all(); // 此處得到的 $articles 是一個對象集合,可以在後面加上 '->toArray()' 變成多維數組。 foreach ($articles as $article) { echo $article->title; } 查找 id 在 10~20 之間的所有文章並列印所有標題 $articles = Article::where('id', '>', 10)->where('id', '<', 20)->get(); foreach ($articles as $article) { echo $article->title; } 查詢出所有文章並循環列印出所有標題,按照 updated_at 倒序排序 $articles = Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get(); foreach ($articles as $article) { echo $article->title; } 基礎使用要點 1. 每一個繼承了 Eloquent 的類都有兩個 '固定用法' 'Article::find($number)' 'Article::all()',前者會得到一個帶有資料庫中取出來值的對象,後者會得到一個包含整個資料庫的對象合集。 2. 所有的中間方法如 'where()' 'orderBy()' 等都能夠同時支持 '靜態' 和 '非靜態鏈式' 兩種方式調用,即 'Article::where()...' 和 'Article::....->where()'。 3. 所有的 '非固定用法' 的調用最後都需要一個操作來 '收尾',本片教程中有兩個 '收尾操作':'->get()' 和 '->first()'。 二、中間操作流 Builder 這個單詞可以直譯成構造器,但是「中間操作流」更容易理解,因為資料庫操作大部分時候都是鏈式操作的。 中間操作流,請看代碼: Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get(); 這段代碼的 `::where()->where()->orderBy()` 就是中間操作流。中間操作流用面向對象的方法來理解,可以總結成一句話: 創建一個對象,並不斷修改它的屬性,最後用一個操作來觸發資料庫操作。 如何找到中間操作流的蛛絲馬跡 中間操作流這個東西,文檔里幾乎沒有任何有價值的信息,那麼,我們該怎麼找出這個玩意兒呢?很簡單,使用以下代碼: $builder = Article::where('title', "我是標題")->title; 然後你就會看到下面的錯誤: 為什麼會出現錯誤?因為 `Article::where()` 了之後依然是 `Builder` 對象,還不是 `Article` 對象,不能直接取 `title`。 「終結者」方法 所謂 「終結者」 方法,指的是在 N 個中間操作流方法對某個 Eloquent 對象進行加工以後,觸發最終的資料庫查詢操作,得到返回值。 `first()` `get()` `paginate()` `count()` `delete()` 是用的比較多的一些 「終結者」 方法,他們會在中間操作流的最後出現,把 SQL 打給資料庫,得到返回數據,經過加工返回一個 Article 對象或者一群 Article 對象的集合。 復雜用法示例 復制代碼 代碼如下: Article::where('id', '>', '100')->where('id', '<', '200')->orWhere('top', 1)->belongsToCategory()->where('category_level', '>', '1')->paginate(10);

㈡ PHP框架 Laravel Eloquent ORM 批量插入數據,怎麼實現

PHP框架LaravelEloquentORM批量插入數據是通過傳入數組實現的。比如:DB::table('users')->insert(array(array('email'=>'[email protected]','votes'=>0),array('email'=>'[email protected]','votes'=>0),));以上是操作表users,執行insert語句,參數是一個數組,封裝了兩條數據,這里可以自定義數據,insert內部就編程批量插入了。然後調用save方法:publicstaticfunctioncreate(array$attributes){$model=newstatic($attributes);$model->save();return$model;}

㈢ php eloquent 怎麼安裝orm

PHP框架 Laravel Eloquent ORM 批量插入數據是通過傳入數組實現的。
比如:
DB::table('users')->insert(array(
array('email' => '[email protected]', 'votes' => 0),
array('email' => '[email protected]', 'votes' => 0),
));
以上是操作表users,執行insert語句,參數是一個數組,封裝了兩條數據,這里可以自定義數據,insert內部就編程批量插入了。

㈣ 如何在 ThinkPHP 中整合 Laravel Eloquent ORM

安裝 illuminate/database根據自己使用的 PHP 版本,通過 composer 安裝對應的 illuminate/database 版本,例如
composer require illuminate/database:5.3.*
接入到 TP 中
在 ThinkPHPLibraryThinkThink.class.php 文件中的 start方法的最後一行的 App::run(); 上方添加如下代碼:
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection([
'driver' => C('DB_TYPE'),
'host' => C('DB_HOST'),
'database' => C('DB_NAME'),
'username' => C('DB_USER'),
'password' => C('DB_PWD'),
'charset' => C('DB_CHARSET'),
'collation' => C('DB_COLLATION'),
'prefix' => C('DB_PREFIX'),
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
解決 E 方法沖突 illuminate/database 的 .php 方法中存在一個方法
/**
* Escape HTML special characters in a string.
*
* @param \Illuminate\Contracts\Support\Htmlable|string $value
* @return string
*/
function e($value)
{
if ($value instanceof Htmlable) {
return $value->toHtml();
}

return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false);
}
與 TP 的 E 方法沖突。

/**
* 拋出異常處理
* @param string $msg 異常消息
* @param integer $code 異常代碼 默認為0
* @throws Think\Exception
* @return void
*/
function E($msg, $code=0) {
throw new Think\Exception($msg, $code);
}
我選擇注釋了 illuminate/database 的方法,搜索後發現沒有其他地方用到這個方法,故注釋。

完成後就可以愉快地使用 Laravel 的 ORM 來 coding 了。

㈤ PHP框架 Laravel Eloquent ORM 批量插入數據,怎麼實現

不是laravel的,,試試吧
ini_set('max_execution_time','0');
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");

$sql = "insert into test(id,account_id,name,created_time,status) values";

for($i=0; $i<100000; $i++){
$str = strrand(32);
$sql .="('".$str."','assdasa','zhangsan','2015-09-17 07:55:10','active'),";
}
$sql = substr($sql,0,strlen($sql)-1);
var_mp($sql);
if($pdo -> exec($sql)){
echo "插入成功!";
echo $pdo -> lastinsertid();
}

㈥ PHP框架 Laravel Eloquent ORM 批量插入數據,怎麼實現


答題不易,互相理解,您的採納是我前進的動力,感謝您。希望回答對你有幫助,如果有疑問,在後盾人上有詳解

㈦ laravel 中的 Eloquent ORM 里,hasOne 和 belongsTo 有什麼區別

沒什麼大區別,在處理代碼的時候是沒有區別的,唯一的區別就是邏輯上的合理性。
打個比方,一個人有一部手機,在人也就是用戶model 中,你肯定要用hasOne 而不是belongsTo,因為你不能說人是屬於手機(雖然也可以這樣,但不符合常理,會讓人覺得莫名其妙);在手機model中使用belongsTo,意味著手機是物件,人是主體,也就是手機是人類的附屬品,且只能有一個。使用的方法名也要切合實際,這樣讀代碼自己或別人才能看明白。

在使用時,其結果都是返回當前用戶的手機或是手機的用戶(你可以選擇collection類型也可以選擇array類型)。注意。在寫方法名的時候,最好使用單數(例如phone或者user)而不是復數(因為手機和人相對的都是單個的,應該用單數,這樣的命名才更符合邏輯與事實)。

㈧ Laravel中表單驗證里unique在update時怎麼排除當前記錄

首先確認,後台的用戶表,我設計表叫做badmin,每個管理員有用戶名(username),有昵稱(nickname),有郵箱(email),有密碼(password)這里玩個花,使用laravel的migration來建立表(實際上可以用不著使用這個工具建立表)1安裝好最基本的laravel框架2創建migration文件:./artisanmigrate:makecreate-badmin-table3發現app/database/migration/下面多了一個php文件:2014_10_19_090336_create-badmin-table.php4往up和down裡面增加內容;increments('id』);$table->string(『nickname',100)->unique();$table->string('username',100)->unique();$table->string('email',100)->unique();$table->string('password',64);$table->timestamps();});}/***Reversethemigrations.**@returnvoid*/publicfunctiondown(){Schema::drop('badmin』);}}5配置好local的database,app/config/local/database.phpPDO::FETCH_CLASS,'default'=>'mysql','connections'=>array('mysql'=>array('driver'=>'mysql','host'=>'localhost','database'=>'test','username'=>'yejianfeng','password'=>'123456','charset'=>'utf8','collation'=>'utf8_unicode_ci','prefix'=>'',),),'migrations'=>'migrations',);6創建數據表:./artisanmigrate--env=local這個時候去資料庫看,就發現多了一張badmin表,數據結構如下:CREATETABLE——badmin——(——id——int(10)unsignedNOTNULLAUTO_INCREMENT,——nickname——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——username——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——email——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——password——varchar(64)COLLATEutf8_unicode_ciNOTNULL,——created_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',——updated_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',PRIMARYKEY(——id——),UNIQUEKEY——badmin_nickname_unique——(——nickname——),UNIQUEKEY——badmin_username_unique——(——username——),UNIQUEKEY——badmin_email_unique——(——email——))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;要問這里為什麼多出了create_at和update_at,這是laravel默認為每個表創建的欄位,而且在使用Eloquent進行增刪改查的時候能自動更新這兩個欄位7創建個Model:'require|alpha_num|min:2','username'=>'require','email'=>'required|email|unique:users','password'=>'required|alpha_num|between:6,12|confirmed',];}這里必須要implementsUserInterface和RemindableInterface8把model和Auth關聯上,修改app/config/auth.php'eloquent',//只有驅動為eloquent的時候才有用'model'=>'Badmin',);這里的driver可以是eloquent或者database,使用eloquent就告訴Auth組件說,用戶認證類是Badmin這個類管的。這里的model是有命名空間的,就是說如果你的admin類是\Yejianfeng\Badmin,這里就應該改成『\Yejianfeng\Badmin'9好了,這個時間其實邏輯部分已經搭建完畢了,你已經可以在controller種使用Auth::attempt(XXX)做許可權認證Auth::user()獲取登錄用戶(一個Badmin類)等。10下面要建立一個用戶登錄頁面:11設置路由:'user.login','uses'=>'UserController@getLogin']);Route::get('user/login',['as'=>'login','uses'=>'UserController@getLogin']);Route::post('user/login',['as'=>'login','uses'=>'UserController@postLogin']);//需要登錄驗證才能操作的介面Route::group(array('before'=>'auth』),function(){Route::get(『user/logout',['as'=>'logout','uses'=>'UserController@getLogout']);Route::get('user/dashboard',['as'=>'dashboard','uses'=>'UserController@getDashboard']);});12設置controller:Input::get('email』),'password'=>Input::get(『password』)))){returnRedirect::to(『user/dashboard』)->with(『message',』成功登錄『);}else{returnRedirect::to('user/login』)->with(『message',』用戶名密碼不正確『)->withInput();}}//登出publicfunctiongetLogout(){Auth::logout();returnRedirect::to('user/login』);}publicfunctiongetDashboard(){returnView::make(『user.dashboard』);}//添加新用戶操作publicfunctiongetCreate(){returnView::make(『user.create』);}//添加新用戶操作publicfunctionpostCreate(){$validator=Validator::make(Input::all(),User::$rules);if($validator->passes()){$bAdmin=newBadmin();$bAdmin->nickname=Input::get(『nickname』);$bAdmin->username=Input::get(『username』);$bAdmin->email=Input::get(『email』);$user->password=Hash::make(Input::get(『password』));$user->save();Response::json(null);}else{Response::json(['message'=>『注冊失敗'],410);}}}13設置下filter,app/filter.phpRoute::filter('auth',function(){if(Auth::guest()){if(Request::ajax()){returnResponse::make('Unauthorized',401);}else{returnRedirect::guest('/』);}}});將這里認證失敗後的地址轉到/路徑14設置views/user/login.blade.php

㈨ 在PHP 領域里,有哪些 ORM 比較好用

首先有個糾結的前提: http://www.iteye.com/topic/319039#852063
在這個糾結的前提下,我認為 PHP 如果用 ORM,應該求簡求輕。
有兩個 PHP 的 ORM 我非常推薦:
Yii Framework 內置的 Active Record: http://www.yiiframework.com/doc/guide/1.1/en/database.ar
Laravel 內置的 Eloquent ORM: http://www.laravel.com/docs/database/eloquent
非常不推薦用這些:
Doctrine http://www.doctrine-project.org/

Propel http://www.propelorm.org/
尤其不推薦 Doctrine,整體是仿 Hibernate 的,但是放在 PHP 中用會非常可怕,成為應用的大負擔。

參考:http://www.hu.com/question/20058218/answer/13834504

㈩ PHP框架 Laravel Eloquent ORM 批量插入數據,怎麼實現

數據填充(也就是批量導入數據)不應該使用 Eloquent ORM , 而是用 Laravel 的 Artisan 命令行,使用起來也很簡單。幫助文檔里寫的比較清楚了

參考: http://laravel.com/docs/4.2/migrations#database-seeding 最下面的 Database Seeding

閱讀全文

與phpEloquent相關的資料

熱點內容
fortran把文件放入文件夾 瀏覽:707
程序員1年經驗不敢投簡歷 瀏覽:481
如何看電腦的源碼 瀏覽:896
找工作app軟體哪個好 瀏覽:96
信息管理網站源碼 瀏覽:439
小說app哪個好免費 瀏覽:224
域名在線加密 瀏覽:146
軟體編程西安交大 瀏覽:453
是不是串貨的奶粉查不到溯源碼的 瀏覽:825
北京dns伺服器雲主機 瀏覽:221
openldaplinux安裝 瀏覽:23
java取月的最後一天 瀏覽:10
騰訊雲伺服器多久退款 瀏覽:949
微信廣告植入系統源碼 瀏覽:922
一年級語文上冊pdf 瀏覽:315
好久不見app干什麼用的 瀏覽:143
壓縮包解壓碼對方可以更改嗎 瀏覽:256
pdf電子書製作軟體 瀏覽:888
數控三通編程 瀏覽:300
linux多終端 瀏覽:811