laravel多資料庫
A. laravel-mongodb中如何獲取資料庫中所有表的名稱
php">useMongoDBModelCollectionInfo;
....
$interator=DB::connection()->listCollections();
$collections=[];
/**@var$collCollectionInfo*/
foreach($interatoras$coll)
{
array_push($collections,$coll->getName());
}
dd($collections);
希望對你有幫助
B. Laravel如何使用資料庫事務及捕獲事務失敗
配置完資料庫連接,就可以使用DB類進行查詢了。
查詢
$results = DB::select('select * from users where id = ?', array(1));
select方法會以數組形式返回查詢結果。
插入
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
更新
DB::update('update users set votes = 100 where name = ?', array('John'));
刪除
DB::delete('delete from users');
注意:update和delete語句返回受影響的行數。
通用語句
DB::statement('drop table users');
監聽Query事件
DB::listen(function($sql, $bindings, $time)
{
//
});
資料庫事務
DB::transaction(function()
{
DB::table('users')->update(array('votes' => 1));
DB::table('posts')->delete();
});
注意:transaction閉包中的任何異常將會導致事務自動回滾。
有時候也許你想自己開啟事務:
DB::beginTransaction();
你也可以自己回滾事務:
DB::rollback();
最後,你可以通過commit方法提交事務:
DB::commit();
多個資料庫連接訪問
當使用多個資料庫連接時,可以通過DB::connection方法訪問它們:
$users = DB::connection('foo')->select(...);
你可以通過PDO實例訪問原生連接:
$pdo = DB::connection()->getPdo();
有時候你需要重連資料庫:
DB::reconnect('foo');
如果因為超出PDO實例的最大連接數限制而要斷開連接,使用disconnect方法:
DB::disconnect('foo');
查詢日誌
默認情況下,Laravel使用日誌記錄當前請求的所有資料庫查詢操作,但是某些時候,比如插入大量數據,會引起應用使用過量內存。為了關閉日誌,可以使用disableQuery方法:
DB::connection()->disableQueryLog();
獲取查詢日誌記錄,可以用過getQuery方法:
$queries = DB::getQueryLog();
C. laravel 操作資料庫需要判斷是否成功嗎
一、讀/寫連接
有時您可能希望使用一個SELECT語句的資料庫連接,,另一個用於插入、更新和刪除語句。Laravel使這微風,將始終使用正確的連接是否使用原始查詢,查詢生成器或雄辯的ORM。
如何讀/寫連接應該配置,讓我們看看這個例子:
復制代碼 代碼如下:
'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
注意,兩個鍵添加到配置陣列:讀和寫。這兩個鍵有數組值包含一個關鍵:主機。其餘的讀寫資料庫選項從主mysql連接將合並後的數組。所以,我們只需要將物品放入讀取和寫入數組如果我們希望覆蓋主要數組中的值。所以,在這種情況下,192.168.1.1將被用作「讀」連接,while192.168.1.2將被用作「寫」連接。資料庫憑證、前綴、字元集和所有其他選項在主mysql數組將跨兩個共享連接。
二、運行查詢
一旦你已經配置了資料庫連接,你可以使用DB運行查詢類。
運行一個Select查詢
復制代碼 代碼如下:
$results = DB::select('select * from users where id = ?', array(1));
結果的選擇方法總是返回一個數組。
運行一個Insert語句
復制代碼 代碼如下:
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
運行一個更新語句
復制代碼 代碼如下:
DB::update('update users set votes = 100 where name = ?', array('John'));
運行一個Delete語句
復制代碼 代碼如下:
DB::delete('delete from users');
注意:update和delete語句返回的行數的影響操作。
運行一個通用聲明
復制代碼 代碼如下:
DB::statement('drop table users');
查詢事件監聽
你可以查詢事件監聽使用DB::聽方法:
復制代碼 代碼如下:
DB::listen(function($sql, $bindings, $time){ //});
三、資料庫事務
運行在一個資料庫事務的一組操作,您可以使用事務方法:
復制代碼 代碼如下:
DB::transaction(function(){ DB::table('users')->update(array('votes'
=> 1)); DB::table('posts')->delete();});
注意:在事務拋出的任何異常關閉將導致自動事務將回滾
有時你可能需要開始一個事務:
復制代碼 代碼如下:
DB::beginTransaction();
你可以通過回滾事務回滾方法:
復制代碼 代碼如下:
DB::rollback();
最後,您可以通過提交方法:提交一個事務
復制代碼 代碼如下:
DB::commit();
四、訪問連接
當使用多個連接,你可以訪問它們通過DB::連接方法:
復制代碼 代碼如下:
$users = DB::connection('foo')->select(...);
你也可以訪問原始的、潛在的PDO實例:
復制代碼 代碼如下:
$pdo = DB::connection()->getPdo();
有時你可能需要重新連接到一個給定的資料庫:
復制代碼 代碼如下:
DB::reconnect('foo');
如果你需要斷開從給定的資料庫將超過底層PDO實例'smax_connections限制,使用斷開連接方法:
復制代碼 代碼如下:
DB::disconnect('foo');
五、查詢日誌
默認情況下,Laravel日誌保存在內存的所有查詢運行當前的請求。然而,在某些情況下,例如當插入的行數,這可能會導致應用程序使用多餘的內存。禁用日誌,你可以使用disableQueryLog方法:
復制代碼 代碼如下:
DB::connection()->disableQueryLog();
o得到一組執行的查詢,您可以使用getQueryLog方法:
復制代碼 代碼如下:
$queries = DB::getQueryLog();
D. 為什麼 Laravel 會成為最成功最流行的 PHP 框架
Laravel是一個有著美好前景的年輕框架,它的社區充滿著活力,同時提供了完整而清晰的文檔,而且為快速、安全地開發現代應用提供了必要的功能。
2011年,Taylor Otwell首次將Laravel帶給這個世界,彼時,Laravel就是一個全新且現代的框架。Laravel基於MVC架構,可以滿足諸如事件處理、用戶身份驗證等各種需求,同時通過包管理實現模塊化和可擴展的代碼,並且對資料庫管理有著健壯的支持。
不管是專家還是新手,一旦接觸到Laravel,都會有相見恨晚之感——這正是你在為PHP項目尋找的框架。本文我們將討論為什麼Laravel會成為最成功最流行的PHP框架。
模塊化&可擴展性
Laravel是模塊化和可擴展的,你可以在包含超過5500個程序包的Packalyst中找到你想要添加的任何代碼。
微服務&API
Lumen是一個由Laravel衍生的專注於性能的微框架。使用Lumen提供的高性能API你可以更加簡單快速地開發微型項目。Lumen使用最小的配置集成了Laravel的所有重要特性,你可以通過將代碼復制到Laravel項目來實現框架的完整遷移。
<?php
$app->get('/', function() {
return view('lumen');
});
$app->post('framework/{id}', function($framework) {
$this->dispatch(new Energy($framework));
});
HTTP路由
Laravel擁有類似於Ruby on Rails的快速高效的路由系統。它可以讓用戶通過在瀏覽器上輸入路徑的方式讓應用程序的各部分相關聯。
Route::get('/', function () {
return 'Hello World';
});
HTTP中間件
Route::get('/', function () {
return 'Hello World';
});
Laravel可以通過中間件對應用進行保護——中間件會處理分析和過濾到達伺服器的HTTP請求。你可以使用中間件來驗證注冊用戶、避免跨站腳本攻擊(XSS)以及其它安全問題。
<?php
namespace App\Http\Middleware;
use Closure;
class OldMiddleware {
public function handle($request, Closure $next) {
if ($request->input('age') <= 200) {
return redirect('home');
}
return $next($request);
}
}
緩存
Laravel提供了健壯的緩存系統,使用緩存可以讓應用載入地更加快速,從而帶來更好的用戶體驗。
Cache::extend('mongo', function($app) {
return Cache::repository(new MongoStore);
});
身份驗證
安全是至關重要的。Laravel自帶對本地用戶的身份驗證,並可以使用「remember」 選項來記住用戶。此外你還可以引入一些額外參數,例如是否是活躍用戶。
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1 ], $remember)) {
// The user is being remembered...
}
集成Stripe
Laravel Cashier可以滿足你開發支付系統過程中所需要的任何需求。除此之外,它還同步並集成了用戶身份驗證系統。所以,你不再需要擔心如何將計費系統集成到開發中了。
$user = User::find(1);
$user->subscription('monthly')->create($creditCardToken);
任務自動化
Elixir是一個讓我們可以使用Gulp定義任務的Laravel API,我們可以使用Elixir定義預處理器來壓縮CSS 和JavaScript。
elixir(function(mix) {
mix.browserify('main.js');
});
加密
一個安全的應用應該做到可以對數據進行加密。在Laravel中,可以使用OpenSSL和AES-256-CBC加密演算法來滿足你所有的加密需求。此外,所有的加密值都通過認證碼進行簽名以避免加密信息被篡改。
use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
事件處理
Laravel應用中對事件的定義、記錄和監聽都非常便捷。服務提供者EventServiceProvider中的listen屬性包含了應用中的所有事件列表。
protected $listen = [
'App\Events\PodcastWasPurchased' => [
'App\Listeners\EmailPurchaseConfirmation',
],
];
分頁
在Laravel中分頁非常簡單,因為它能夠根據用戶在瀏覽器中的當前頁生成一系列分頁鏈接。
<?php
namespace App\Http\Controllers;
use DB;
use App\Http\Controllers\Controller;
class UserController extends Controller {
public function index() {
$users = DB::table('users')->paginate(15);
return view('user.index', ['users' => $users]);
}
}
對象關系映射(ORM)
Laravel包含了一個資料庫處理層,其中的對象關系映射被稱作Eloquent。另外這個對象關系映射也適用於PostgreSQL。
$users = User::where('votes', '>', 100)->take(10)->get();
foreach ($users as $user) {
var_mp($user->name);
}
單元測試
單元測試的開發是一個耗費大量時間的任務,但是它卻保證了我們的應用能夠正常工作,不出問題。Laravel使用PHPUnit進行單元測試。
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase {
public function testBasicExample() {
$this->visit('/')->see('Laravel 5')->dontSee('Rails');
}
}
待辦事項清單(Queue)
Laravel提供了在後台使用待辦事項清單(to do list)處理復雜、漫長流程的選擇,好吧,其實就是隊列,隊列可以讓我們非同步處理某些流程而不需要用戶在載入頁面時長時間的等待。
Queue::push ( new SendEmail ( $ message ));
E. 怎樣用laravel動態創建資料庫表
aravel提供了3種操作資料庫方式:DB facade(原始方式)、查詢構造器和Eloquent ORM。下面我將逐一講解。 資料庫的配置文件在config目錄下的database.PHP里。打開這個文件,找到MySQL的配置項。 這里有個env,它其實是調用了laravel根目錄下的.e
F. laravel資料庫查詢,在資料庫裡面可以運行,在代碼裡面錯誤
在group by 後邊加多「,activity_scheles.title"
原因:sql基本語法錯誤,group by 後邊要跟select列名保持一致,mysql沒報錯可能是因為你關了ONLY_FULL_GROUP_BY這個sql_model
G. php框架 laravel 多重條件查詢。對資料庫查詢,在滿足日期范圍查詢的同時在滿足一個或幾個條件查詢。
laravel的where條件可以無限制加的,想加多少個加多少個的
$result=Model::whereIn(/*條件1*/)
->whereNotIn(/*條件2*/)
->whereBetween(/*條件3*/)
->where(/*條件4*/)
->orderBy()
->get()
//類似這樣的,where條件可以接很多個,沒有限制
H. Laravel 4.1在進行資料庫save()時,會自動多出兩個欄位updated_at和created_at,如何取消
在模型中添加以下屬性:public $timestamps = false;
默認情況下,Eloquent 在數據的表中自動地將維護 created_at 和 updated_at 欄位。
只需簡單的添加這些 timestamp 欄位到表中,Eloquent 將為您做剩餘的工作。
Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
I. 新手php框架要先學laravel好還是tp
對於新手來說是學習php框架最佳的選擇是tp
thinkphp,國內的PHP框架,具有簡單,快速,兼容等優點,。從5.0版本開始,號稱為API開發而設計的高性能框架。配置開發也是非常簡單,一般下載框架就可以直接開發,開發代碼風格也符合國人思想,所以簡單,快捷,適合新手的php框架。
Laravel框架,是當今最熟練,流行和廣泛使用的開源框架之一。Laravel具有多種功能,例如模板引擎,MVC架構支持,安全性高,開發者工具,資料庫遷移等。這些Laravel高級功能使它比其他PHP框架更好。新手為什麼不強烈推薦呢?主要是Laravel框架是一個國際的框架,很多是英文,雖然有翻譯文檔,但是對於英語不好的新手來說,更是折磨。所以比較建議tp
J. 打算使用laravel現有的資料庫上做開發,會有哪些坑
laravel ORM支持多資料庫,但mongodb需要用插件:jenssegers/laravel-mongodb · GitHub
1、表名問題不大,關鍵是你的表是適合MVC結構的,spring應該差不多,要玩轉laravel,還是要使用Eloquent ORM,這樣你需要給你的表建立對應的entity(也就是model),然後通過model建立好表間關系。另外有個插件可以 從現有的表 直接生成 migration,你可以試試。
2、資料庫事件 主要通過模型事件來完成:
Project::creating(function($project) { }); // *
Project::created(function($project) { });
Project::updating(function($project) { }); // *
Project::updated(function($project) { });
Project::saving(function($project) { }); // *
Project::saved(function($project) { });
Project::deleting(function($project) { }); // *
Project::deleted(function($project) { });
還是比較簡單的