laravel框架之数据库
准备
laravel基础和环境搭建可以参考
《laravel入门及技术指南》https://blog.csdn.net/yan_dk/article/details/117375890
laravel操作数据库
建立基本数据库访问组件框架
建立自定义路由(数据库)
app/providers/RouteServiceProvider.php,增加路由服务
//数据库操作路由protected function mapDbRoutes(){Route::middleware('web')->namespace('App\Http\Controllers')->group(base_path('routes/db.php'));}
调用路由服务
建立相应的路由配置文件routes/db.php
<?php
Route::get('db',function (){
dd(config());
});
这样,就已经快速构建了数据库访问路由,我们启动服务器127.0.0.1:8000,访问一下
http://127.0.0.1:8000/db,如下显示
我们上面只是搭建了访问数据库的基本路由,还没有真正配置数据库,访问真正的数据库内容,下面继续。
我们建立数据库mysql,启动数据库服务器,建立测试库db_laravel,测试表goods。
数据库默认连接参数修改 .env文件
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel
DB_USERNAME=root
DB_PASSWORD=root
建立数据库访问控制器
> php artisan make:controller DbController
user DB;
class DbController extends Controller{public function conn() {//找到默认的配置$result = DB::select('select * from goods');dd($result);}
}
路由配置修改routes/db.php
//配置连接
Route::get('conn','DbController@conn');
浏览器访问http://127.0.0.1:8000/conn
自定义数据库访问配置
在应用中,可能会访问多数据库环境,我们需要自定义配置不同的数据库,.env只是系统默认数据库连接配置,那么我们继续配置自定义数据库配置。
环境准备:建立测试数据库db_yunyan,测试表test
修改数据库配置文件config/database.php,增加如下
'mysql_yunyan' => ['driver' => 'mysql','url' => env('DATABASE_URL'),'host' => env('DB_HOST', '127.0.0.1'),'port' => env('DB_PORT', '3306'),'database' => 'db_yunyan','username' => 'root','password' => 'root','unix_socket' => env('DB_SOCKET', ''),'charset' => 'utf8mb4','collation' => 'utf8mb4_unicode_ci','prefix' => '','prefix_indexes' => true,'strict' => true,'engine' => null,'options' => extension_loaded('pdo_mysql') ? array_filter([PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),]) : [],],
控制器文件DbController 增加方法:
public function conn_yunyan() {//指定配置连接$result = DB::connection('mysql_yunyan')->select('select * from test');dd($result);}
路由配置修改routes/db.php
//自定义配置
Route::get('conn_yunyan','DbController@conn_yunyan');
浏览器访问http://127.0.0.1:8000/conn_yunyan
CRUD数据库操作
控制器文件DbController 增加方法:
//crudpublic function crud_insert() {//预处理sql//select参数:1、sql语句 2、预处理语句的值(数组传参)/* $result = DB::connection('mysql_yunyan')->select('select * from test where id = ?', [3]);$result1 = DB::connection('mysql_yunyan')->select('select * from test where id = :id', ['id'=>3]);*///新增$result1 = DB::connection('mysql_yunyan')->select('insert into test (`age`,`username`) value (?,?)', ['38','yunyan2']);//修改//删除$result = DB::connection('mysql_yunyan')->select('select * from test');dd($result);}
路由配置修改routes/db.php
//curd操作
Route::get('crud_insert','DbController@crud_insert');
浏览器访问http://127.0.0.1:8000/crud_insert
数据库事务控制操作
控制器文件DbController 增加方法:
//事务控制public function trans() {//自动事务/* DB::transaction(function (){//修改$num = DB::update("update goods set goods_name = 'Macos' where id = :id",['id'=>1]);//删除$num1 = DB::delete('delete from goods where id = 7');var_dump($num,$num1);try{if ($num > 0 && $num1 > 0) {return '事务操作成功';}else {throw new \Exception('事务操作失败');}}catch (Exception $e){return $e->getMessage();}});*///手动事务DB::connection('mysql_yunyan')->beginTransaction();//修改$num = DB::connection('mysql_yunyan')->update("update test set username = 'yunyan_upd2' where id = :id",['id'=>2]);//删除$num1 = DB::connection('mysql_yunyan')->delete('delete from test where id = 7');if ($num > 0 && $num1 > 0) {echo '事务操作成功';//事务提交DB::connection('mysql_yunyan')->commit();}else {//事务回滚echo '事务操作失败';DB::connection('mysql_yunyan')->rollBack();}}
路由配置修改routes/db.php
//事务操作
Route::get('trans','DbController@trans');
浏览器访问http://127.0.0.1:8000/trans
数据库迁移
laravel提供了基本的数据库模型,主要是用户认证相关表,包括users、password_resets。可以通过命令来生成数据库表、及迁移记录。当然还可以增加扩展。
我们需要启动数据库服务器,按默认配置.env中连接数据库参数连接,执行命令如下
# php artisan migrate
执行后,laravel将在连接的数据库中建立生成默认的数据表users、password_resets、failed_jobs等,我们可以根据应用需要,选择用还是不用,还是在此基础扩展,也可以新添加
程序的migrations目录会生成上述日志文件。
问题:执行指令时可能会报错,
答:注意config/database.php配置参数
,改成这样应该就可以,这是laravel基本库的连接要求,生成默认的数据表。
创建数据库模型
Eloquent模型,是一种面向对象编程中解决不同系统间数据的转化方案。创建出虚拟对象的数据库。
# php artisan make:model Model\Admin
程序目录自动创建对象Admin.php
我们可以对应创建相应的数据表admin,laravel默认对应表是加s,如果指定表名,可以在模型类中定义,还有很多自定义选项的定义。
class Admin extends Model
{//protected $table = 'admin';
}
创建模型的控制器
# php artisan make:controller EloquentController
use App\Model\Admin;class EloquentController extends Controller
{public function index() {//查询所有数据dump(Admin::all());}
}
增加路由服务,app/providers/RouteServiceProvider.php,
public function map(){$this->mapApiRoutes();$this->mapWebRoutes();//模型控制器路由$this->mapEloquentRoutes();//}//模型控制器路由protected function mapEloquentRoutes(){Route::middleware('web')->namespace('App\Http\Controllers')->group(base_path('routes/eloquent.php'));}
添加路由配置文件 routes/eloquent.php
Route::get('Eloquent','EloquentController@index');
然后我们启动数据库服务器,测试数据表admin输入测试数据,启动服务器,访问http://127.0.0.1:8000/Eloquent
就可以立刻看到访问结果了。
小结:laravel提供的数据库模型,直接与数据表关联,提供一套模型表CRUD基本操作方法,对于我们做数据表一些简单操作提供一些支持,但对于实际应用中可能并不太适用,实际应用可能更灵活复杂,单表操作的很少,用来做简单测试使用一下,懂得原理就可以了。
laravel框架之数据库相关推荐
- 关于laravel 框架运行数据库迁移文件的一个小坑以及常用php artisan命令
小白我因为最近开发的一系列项目都是用的laravel框架,所以为了方便有时候就会直接复制一份代码以此作为新项目的基础.可能因为"因为夜路走多了,所以掉坑里了">>> ...
- Laravel框架中数据库分表时Model使用方法
前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...
- laravel框架的数据库链接
刚才配置了数据库链接代码之后发现怎么也连不上,是因为有两个文件 .env和.envexample文件,注意配置参数要在.env文件里面,比如我用mysql的话配置.env里 这么一段: DB_CONN ...
- laravel 框架中使用数据库迁移添加注释
laravel 框架中数据库迁移添加注释 在使用laravel框架过程中,估计很多人都有用过数据库迁移文件.可能大家都会在建表时为字段添加注释.我在此要说明的是为表添加注释 首先我们需要引入larav ...
- laravel框架详解 学以致用
系列文章目录 提示: laravel介绍.文件配置.路由使用 .控制器的使用 . 数据的操作.@csrf防护.文件上传 文章目录 系列文章目录 laravel框架 详解一些功能 学以致用 一.lara ...
- laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据
php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库. 设计数据库 ...
- laravel框架连接Oracle,laravel5.8(十四)连接oracle数据库
首先确定你的PHP已经支持oracle数据库的链接.PHP需要安装OCI8扩展. 确定PHP可以链接ORACLE数据库之后.我们使用composer安装laravel支持oracle链接的插件 yaj ...
- ueditor集成实例php,Laravel框架集成UEditor编辑器的方法图文与实例详解
本文实例讲述了Laravel框架集成UEditor编辑器的方法.分享给大家供大家参考,具体如下: 一. 背景 在项目开发的过程中,免不了使用修改功能,而富文本编辑器是极为方便的一种推荐,当然,个人认为 ...
- laravel框架的基础学习路线(不带composer的)
首先,博主这里一直用的都是laravel的一键安装包,所以一直没有用composer来操作过laravel.很多事情不用composer也能完成.这里主要是写给公司同事的一个laravel框架入手顺序 ...
最新文章
- 自从上线了 Prometheus 监控告警,真香!
- js计算前三个月的时间精确到时分秒
- BZOJ3675: [Apio2014]序列分割
- 介绍 WebLogic 的一些结构和特点
- Tips - C++
- Java面试170题答案解析(1-20题)
- 玩转大数据系列之三:数据报表与展示
- android 蒙版图片带拖动_黑橙修图:新手入门篇2-一句话带你认识图层蒙版
- MySQL 服务的启动与停止
- 数据库基本----SQL语句大全(转载)
- 使用pyautogui自动刷微信表情
- 使用QRCode.js生成二维码
- 精华 | 网络故障排除命令汇总【网工必须收藏】
- 阙值,阈值,阀值,傻傻分不清
- 寒冬季的建议:别麻木,别脱产,别放弃规划
- bugkuctf never give up
- Speedoffice(excel)如何加粗边框线条
- Win10:鼠标右键如何添加快捷关机、注销等功能
- 计算机丢失quartz.dll什么意思,计算机中丢失quartz.dll解决方法
- 英雄互娱A股上市路:被收购、独立IPO、借壳均被按下暂停键
热门文章
- 过敏性皮肤、春天皮肤过敏、皮肤过敏--皮肤过敏怎么办?
- 关于contentWindow和contentDocument
- 精选10个Python库,几行代码轻松搞定探索性数据分析!
- Linux 环境下Java环境变量配置
- MySQL时区问题日期时差8个小时,解决方法
- outlook计算机应用操作题,全国统考计算机应用基础outlook操作题(总13页).doc
- OPPO R15x在哪里打开usb调试模式的详细流程
- Android service启动流程分析.
- 数据结构与算法训练:第十一弹
- php清空mysql数据表,mysql怎么清空数据表数据