当前位置:首页 » 操作系统 » laravel多数据库

laravel多数据库

发布时间: 2022-11-20 01:05:14

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,如何取消

  1. 在模型中添加以下属性:public $timestamps = false;

  2. 默认情况下,Eloquent 在数据的表中自动地将维护 created_at 和 updated_at 字段。

  3. 只需简单的添加这些 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) { });

还是比较简单的

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:333
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:377
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:610
java用什么软件写 发布:2025-05-18 03:56:19 浏览:31
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:941
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:802
网卡访问 发布:2025-05-18 03:35:04 浏览:510
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371