雅荷心语博客
雅荷心语
心之所向便是光
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 关注本站
    • 微信
    • 微博
    • 腾讯微博
    • Twitter
    • Facebook
    • RSS订阅
Hi, 请登录     我要注册     找回密码

在Laravel外独立使用Eloquent

2016-10-17 分类:后端之路 阅读(2239) 评论(0)

不得不承认Laravel的Eloquent是一个很棒的ORM,其实Laravel框架的设计本身结构使用的是subtree实现(外层使用的git-subsplit) , 也就是说Eloquent是独立的模块,我们也可以在自己的项目里通过composer来使用Eloquent,本文就详细讲解如何在自己的项目集成Eloquent。

安装

首先我们得有composer,安装方法请详见:https://getcomposer.org/doc/00-intro.md 可能没有翻墙的情况下使用composer会比较慢,那么这里同样有福利:http://pkg.phpcomposer.com/ 。

我们这里建议一个项目demo, 然后我们在demo目录下执行:

1
composer require illuminate/database:~4.2

那么你应该会看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Using version ~4.2 for illuminate/database  
./composer.json has been created
Loading composer repositories with package information  
Updating dependencies (including require-dev)  
  - Installing nesbot/carbon (1.13.0)
    Loading from cache
 
  - Installing illuminate/support (v4.2.9)
    Downloading: 100%
    Downloading: 100%
    Downloading: 100%
 
    Failed, trying the next URL
    Downloading: 100%
 
  - Installing illuminate/container (v4.2.9)
    Downloading: 100%
 
  - Installing illuminate/events (v4.2.9)
    Downloading: 100%
 
  - Installing illuminate/database (v4.2.9)
    Downloading: 100%
 
Writing lock file  
Generating autoload files

这样就表示Eloquent已经安装好了。

配置

下面我们来配置Eloquent。

  1. 首先我们创建一个入口文件,如果你的项目已经有内容,那么同理在你的项目入口文件加入即可:

demo/start.php:

1
2
3
4
<?php
 
// 载入composer的autoload文件
include __DIR__ . '/vendor/autoload.php';

然后我们加入数据库配置:

1
2
3
4
5
6
7
8
9
10
$database = [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'demo',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];

上面我们的数据库配置,库名demo,用户名root,密码为空,这个demo是我在mysql里建立好的空数据库。

然后我们加入Eloquent初始化代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
use Illuminate\Container\Container;  
use Illuminate\Database\Capsule\Manager as Capsule;
 
$capsule = new Capsule;
 
// 创建链接
$capsule->addConnection($database);
 
// 设置全局静态可访问
$capsule->setAsGlobal();
 
// 启动Eloquent
$capsule->bootEloquent();

那么Eloquent就配置完成了。

最终的文件demo/start.php应该是这样:

demo/start.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
// 载入composer的autoload文件
include __DIR__ . '/vendor/autoload.php';
 
$database = [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'demo',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];
 
use Illuminate\Container\Container;  
use Illuminate\Database\Capsule\Manager as Capsule;//如果你不喜欢这个名称,as DB;就好
 
$capsule = new Capsule;
 
// 创建链接
$capsule->addConnection($database);
 
// 设置全局静态可访问
$capsule->setAsGlobal();
 
// 启动Eloquent
$capsule->bootEloquent();

 

那么现在只要你需要使用到Eloquent的地方载入这个文件即可, 下面我们来简单介绍一下使用。

建表

配置完成了,我们再来使用Eloquent的结构生成器创建数据库的表:

demo/table.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
//包含Eloquent的初始化文件
include __DIR__ . '/start.php';
 
use Illuminate\Database\Capsule\Manager as Capsule;
 
Capsule::schema()->create('users', function($table)  
{
    $table->increments('id');
    $table->string('username', 40);
    $table->string('email')->unique();
    $table->timestamps();
});

然后我们运行table.php,两种方式:浏览器打开,或者命令行运行:

1
php table.php

然后我们的查看MySQL数据库domo里就会有一个users表了:

demo-db

写入数据

表建立好了,然后我们插入数据,我们同样创建一个文件 demo/insert.php来做实验:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
//包含Eloquent的初始化文件
include __DIR__ . '/start.php';
 
use Illuminate\Database\Capsule\Manager as Capsule;
 
Capsule::table('users')->insert(array(  
        array('username' => 'Hello',  'email' => 'hello@world.com'),
        array('username' => 'Carlos',  'email' => 'anzhengchao@gmail.com'),
        array('username' => 'Overtrue',  'email' => 'i@overtrue.me'),
    ));

我们写入了3条数据。

使用模型

只要你的模型继承Eloquent的Model类,就没问题了:

1
2
3
4
5
use  Illuminate\Database\Eloquent\Model  as Eloquent;
class User extends  Eloquent  
{
    protected $table = 'users';
}

那么你就可以很方便的像在Laravel框架里一样使用Eloquent了:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 查询id为2的
$users = User::find(2);
 
// 查询全部
$users = User::all();
 
// 创建数据
$user = new User;
$user->username = 'someone';
$user->email = 'some@overtrue.me';
$user->save();
 
// ... 更多

OK,这基本上就搞定了,当然,你用分页的时候会出问题,我们下一节再讲。

更多关于Eloquent的使用请参考: http://v4.golaravel.com/docs/4.1/eloquent

来源: http://www.golaravel.com/post/zai-laravelwai-du-li-shi-yong-eloquent/

喜欢 (1) 赏 讨厌 (0)
分享到:更多 ()

相关推荐

  • 将docker安装到D盘或者其他目录
  • 使用 python 给音频增加水印,剪辑压缩后不丢失!
  • 如何使用 nodejs 下载一个 wav 音频
  • macOS 对 Demucs 的支持
  • edge-tts 初体验
  • 联盟数据查询示例
  • 科学上网记录
  • 在浏览器内使用obs-websocket-js控制obs录屏
关于我

小天明 北京·朝阳 前端搬砖工程师

碎碎念):(来自公众号)

热门文章

  • 踩坑记录——iphone上safari开启隐身模式时localStorage变为只读-雅荷心语博客踩坑记录——iphone上safari开启隐身模式时localStorage变为只读2017-02-21评论(4)
  • 程序员是怎样一群人-雅荷心语博客程序员是怎样一群人2015-12-08评论(3)
  • 百度你个大毒瘤 - 吐糟博客这几天打不开事情-雅荷心语博客百度你个大毒瘤 – 吐糟博客这几天打不开事情2015-12-28评论(2)
  • PHP 非对称加密 openssl 加密及解密方法-雅荷心语博客PHP 非对称加密 openssl 加密及解密方法2016-05-17评论(2)
  • PHPStorm10 下载安装破解汉化-雅荷心语博客PHPStorm10 下载安装破解汉化2015-12-15评论(2)
2025年7月
一 二 三 四 五 六 日
« 六    
 123456
78910111213
14151617181920
21222324252627
28293031  

最新评论

  • 前端小武 8年前 (2017-04-06)说:
    我看到了layer
  • 丁艳平 8年前 (2017-03-03)说:
  • Dawn 9年前 (2016-09-16)说:
    call_user_func_array最后的例子是错哦,你用bc方法去调用类里 另外一个方法就知道问题所在了。情况1.调用非静态方法 第一个参数应该传[类的实例,调用方法] (既然有类实例了直接-&
  • Dawn 9年前 (2016-06-21)说:
    tp框架设置了全局捕获异常的,这也没什么。坑的是 他捕获了异常。然后全部返回404。。。不知道的 还以为自己网站被删除了
  • Dawn 9年前 (2016-05-17)说:
    构造函数里的判断 用异常机制可能更好一些

其他类型

  • 芊云全景
  • 配音兔AI配音神器

博客类型

  • 芊云全景
  • 配音兔AI配音神器

左邻右舍

  • 易水寒
  • 楼教主
  • 芊云全景
  • 贤心
  • 配音兔AI配音神器

雅荷心语博客 -心之所向便是光

联系我们关于我们

© 2025 雅荷心语博客   网站地图