laravel資料庫連接
㈠ 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();
㈡ 如何在新浪雲sae上安裝部署laravel5.1應用並測試資料庫連接
1、創建SAE應用
首先進入新浪雲SAE界面 http://sae.sina.com.cn/ :
點擊「創建新應用」,在創建應用頁面填寫表單,開發語言選擇php 5.6,選中「空應用」,然後點擊「創建應用」:
這樣在管理應用列表新增了一個「Laravel SAE」應用:
接下來我們點擊「Laravel SAE」進入管理應用界面,選擇左側「代碼管理」鏈接上傳應用代碼:
我們選擇使用Git管理代碼,點擊「Git」按鈕,頁面跳轉到Git安裝指南頁面:
通過該頁面我們得知代碼倉庫是 https://git.sinacloud.com/laravelsae/ ,接下來我們就可以按照部署說明上傳代碼到SAE。
2、上傳Laravel項目代碼到SAE
這里我們選擇Github上一個現成的項目 laravel5-on-sae ,該項目針對SAE對Laravel 5.1代碼做了特定修改,我們下載其 項目包 並解壓到本地。進入解壓後的 laravel5-on-sae 目錄,刪除隱藏的文件夾 .git ,新建一個 config.yaml ,編輯其內容如下:
handle:
- rewrite: if (path ~ "^/$") goto "public/index.php"
- rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "public/index.php/$1"
編輯 .gitignore 文件,移除第一行 /vendor (否則使用Git命令忽略該目錄,導致找不到/vendor/autoload.php而報錯)。
編輯 config/app.php ,移除 providers 數組中的如下這行:
App\Providers\ViewComponentServiceProvider::class,
編輯 app/Providers/EventServiceProvider.php 內容如下:
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
}
}
然後在 laravel5-on-sae 目錄下執行如下命令:
git init
git remote add sae https://git.sinacloud.com/laravelsae/
git add .
git commit -am 'laravelsae'
git push sae master:1
最後一條命令需要輸入的用戶名和密碼為安全郵箱和安全密碼,而不是微博賬號和密碼。如已啟用微盾動態密碼,則密碼應該是「安全密碼」+「微盾動態密碼」。
這樣我們就可以成功提交代碼到Laravel SAE應用。
在開始之前還需要在SAE中初始化Memcache,並且在Storage中新建一個域名為 laravel 的domain。
接下來我們在瀏覽器中訪問 http://laravelsae.sinaapp.com/laravel ,頁面顯示如下:
說明代碼部署成功!
3、測試資料庫連接
要在SAE上連接資料庫,首先我們需要點擊左側mysql初始化資料庫:
選擇「共享型MySQL」:
InnoDB目前只對企業開發,所以我們選擇MyISAM引擎,然後點擊初始化資料庫。初始化成功後頁面跳轉到MySQL管理頁面:
SAE中MySQL主機、埠、用戶名及密碼都用常量表示,我們在代碼中也要使用這些常量對資料庫進行設置,當然 laravel5-on-sae 這個項目已經為我們做好了設置,甚至配置了讀寫分離:
這里我去將 prefix 配置設置為 '' ,即不使用任何數據表前綴。
接下來我們對資料庫進行測試,還是在MySQL管理頁面我們點擊「管理MySQL」,頁面會跳轉到MySQL資料庫管理頁面,實際上是一個phpMyAdmin頁面:
在phpMyAdmin中我們創建一個數據表 posts 並插入兩條記錄:
接下來我們在項目代碼中 routes.php 新增一條路由:
Route::get('database/test','DbController@test');
然後創建控制器 DbController ,編輯其內容如下:
<?php
namespace App\Http\Controllers;
use DB;
class DbController extends Controller{
public function test(){
$posts = DB::table('posts')->get();
dd($posts);
}
}
然後提交該代碼到SAE項目:
git add .
git commit -m 'test'
git push sae master:1
在瀏覽器中訪問 http://laravelsae.sinaapp.com/database/test
㈢ laravel框架各文件作用是什麼之間什麼關系
文件的文件夾
作用
/app/config/
配置應用程序的運行時規則、 資料庫、 session等等。包含大量的用來更改框架的各個方面的配置文件。大部分的配置文件中返回的選項關聯PHP數組。
/app/config/app.php
各種應用程序級設置,即時區、 區域設置(語言環境)、 調試模式和獨特的加密密鑰。
/app/config/auth.php
控制在應用程序中如何進行身份驗證,即身份驗證驅動程序。
/app/config/cache.php
如果應用程序利用緩存來加快響應時間,要在此配置該功能。
/app/config/compile.php
在此處可以指定一些額外類,去包含由『artisan optimize』命令聲稱的編譯文件。這些應該是被包括在基本上每個請求到應用程序中的類。
/app/config/database.php
包含資料庫的相關配置信息,即默認資料庫引擎和連接信息。
/app/config/mail.php
為電子郵件發件引擎的配置文件,即 SMTP 伺服器,From:標頭
/app/config/session.php
控制Laravel怎樣管理用戶sessions,即session driver, session lifetime。
/app/config/view.php
模板系統的雜項配置。
/app/controllers
包含用於提供基本的邏輯、 數據模型交互以及載入應用程序的視圖文件的控制器類。
/app/database/migrations/
包含一些 PHP 類,允許 Laravel更新當前資料庫的架構並同時保持所有版本的資料庫的同步。遷移文件是使用Artisan工具生成的。
/app/database/seeds/
包含允許Artisan工具用關系數據來填充資料庫表的 PHP 文件。
/app/lang/
PHP 文件,其中包含使應用程序易於本地化的字元串的數組。默認情況下目錄包含英語語言的分頁和表單驗證的語言行。
/app/models/
模型是代表應用程序的信息(數據)和操作數據的規則的一些類。在大多數情況下,資料庫中的每個表將對應應用中的一個模型。應用程序業務邏輯的大部分將集中在模型中。
/app/start/
包含與Artisan工具以及全球和本地上下文相關的自定義設置。
/app/storage/
該目錄存儲Laravel各種服務的臨時文件,如session, cache, compiled view templates。這個目錄在web伺服器上必須是可以寫入的。該目錄由Laravel維護,我們可以不關心。
/app/tests/
該文件夾給你提供了一個方便的位置,用來做單元測試。如果你使用PHPUnit,你可以使用Artisan工具一次執行所有的測試。
/app/views/
該文件夾包含了控制器或者路由使用的HTML模版。請注意,這個文件夾下你只能放置模版文件。其他的靜態資源文件如css, javascript和images文件應該放在/public文件夾下。
/app/routes.php
這是您的應用程序的路由文件,其中包含路由規則,告訴 Laravel 如何將傳入的請求連接到路由處理的閉包函數、 控制器和操作。該文件還包含幾個事件聲明,包括錯誤頁的,可以用於定義視圖的composers。
/app/filters.php
此文件包含各種應用程序和路由篩選方法,用來改變您的應用程序的結果。Laravel 具有訪問控制和 XSS 保護的一些預定義篩選器。
花了很多心思在建立和命名文件夾上,得到的就是一個具有良好的文件系統的應用程序。
在這里你得到了什麼:MVC
㈣ laravel 必須要建默認資料庫嗎
我們安裝wamp,並且使用mysql方式。用wamp自帶的phpMyAdmin添加一個名字為laravel的資料庫。
app/config目錄下,database.php包含資料庫的配置,打開並修改mysql部分為如下:
建立一個遷移
在cmd裡面,定位到 laravel所在目錄,執行如下命令:
php artisan migrate:make --create=articles
其中,--create=articles 就表示建立數據表
這樣,在 app/database/migrations/目錄下,會生成一個遷移文件。文件名是 時間編號+create_articles_table.php本例是:2015_01_25_144256_create_articles_table.php
修改遷移
打開文件,2015_01_25_144256_create_articles_table.php
裡面類CreateAritclestable負責管理資料庫,它的up方法調用Schema::create來建立一個數據表articles,默認已經包括一個自增的id和時間欄位。
如紅線所示,我們再添加兩個欄位title 和 text。
執行遷移
在cmd命令窗口,執行如下命令:
php artisan migrate
然後查看資料庫laravel
㈤ Laravel框架怎麼配置
Laravel框架怎麼配置
分步閱讀
框架下載好了,但是想要很好的使用,可能我們還有一些東西需要知道,這就是配置。和項目有關的配置是在 app/config 文件夾里,但是除了這里還有一些配置可能是我們需要的。作為一個基礎教程,我就不一一介紹了,只是選擇一些大家配置比較多的地方講解一下。
app/config 中的配置說明
在 app/config 文件夾中經常配置的一般有兩個文件:app.php 和 database.php 兩個文件,他們一個是配置項目雜項的、一個是配置資料庫的。下面我就裡面的常用配置做一下解釋: 先是 app.php 文件
其實 app.php 後面還有一些內容,但那些基本上不需要你修改。(只有添加第三方包的時候才有需要,我們會到時候再講)
接下來介紹 database.php 文件
<?php
return array(
'fetch' => PDO::FETCH_CLASS,
'default' => 'meinv',
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/proction.sqlite',
'prefix' => '',
),
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'meinv' => array( //這里就是上面例子里的默認連接資料庫名,實際上是 mysql 資料庫
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'prefix' => '',
),
),
);
?>
㈥ 本地laravel框架怎麼連接mysql資料庫
本地安裝好MYSQL資料庫後怎麼連接的解決方法如下: 1、連接名:任意輸入一個名稱 2、mysql連接:localhost或127.0.0.1 3、用戶名:root 4、密碼:你安裝mysql時設置的密碼 5、資料庫:你要連接的資料庫我,discuz好像有默認的資料庫名,你可以看....
㈦ laravel的資料庫是pdo嗎
親,laravel 是使用PDO 方式連接的資料庫!~~
㈧ laravel 怎樣連接sqlite資料庫
https://github.com/5-say/larav ... 23L29 注意看 29 行,這個 demo 默認就是用的 sqlite。
㈨ 在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();
㈩ laravel 怎麼設置資料庫埠
本文實例講述了Laravel執行migrate命令提示:No such file or directory的解決方法。分享給大家供大家參考,具體如下:
今天使用Laravel命令行工具操作資料庫遷移操作時報錯,提示mysql 2002錯誤,如圖:
查看資料庫配置沒錯呀,網站前台也可以打開,說明能連上,那是什麼原因呢?
在Laravel5中,有兩種辦法解決:
1.增加一個資料庫配置項
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 'prefix' => 'laravel_', 'strict' => false, ],
這里增加的一項是unix_socket,本機Mac上裝的MAMP環境,路徑是/Applications/MAMP/tmp/mysql/mysql.sock,查看自己路徑的辦法是在mysql中輸入以下命令就可以看到:
show variables like '%sock%';
如下圖所示:
2.修改.env配置
這個辦法只能是臨時修改,讓migrate可以執行,然後必須改回來。
DB_HOST=localhost DB_CONNECTION=mysql DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=tanteng DB_PORT=8889
臨時修改辦法是把DB_HOST那裡改成localhost:8889,也就是把埠號加上,再使用Laravel5的artisan命令執行migrate操作就可以了,但是操作完了要改回以前的寫法,否則網站前台頁面會打不開連不上資料庫,提示錯誤:SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost:8889' (0)
好了,這樣就解決了使用Laravel5的migrate報錯的問題。
轉自:小談博客 http://www.tantengvip.com/2015/12/laravel-migrate-mysql-2000/
更多關於Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字元串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家基於Laravel框架的PHP程序設計有所幫助。