准备

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框架之数据库相关推荐

  1. 关于laravel 框架运行数据库迁移文件的一个小坑以及常用php artisan命令

    小白我因为最近开发的一系列项目都是用的laravel框架,所以为了方便有时候就会直接复制一份代码以此作为新项目的基础.可能因为"因为夜路走多了,所以掉坑里了">>> ...

  2. Laravel框架中数据库分表时Model使用方法

    前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...

  3. laravel框架的数据库链接

    刚才配置了数据库链接代码之后发现怎么也连不上,是因为有两个文件 .env和.envexample文件,注意配置参数要在.env文件里面,比如我用mysql的话配置.env里 这么一段: DB_CONN ...

  4. laravel 框架中使用数据库迁移添加注释

    laravel 框架中数据库迁移添加注释 在使用laravel框架过程中,估计很多人都有用过数据库迁移文件.可能大家都会在建表时为字段添加注释.我在此要说明的是为表添加注释 首先我们需要引入larav ...

  5. laravel框架详解 学以致用

    系列文章目录 提示: laravel介绍.文件配置.路由使用 .控制器的使用 . 数据的操作.@csrf防护.文件上传 文章目录 系列文章目录 laravel框架 详解一些功能 学以致用 一.lara ...

  6. laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据

    php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库. 设计数据库 ...

  7. laravel框架连接Oracle,laravel5.8(十四)连接oracle数据库

    首先确定你的PHP已经支持oracle数据库的链接.PHP需要安装OCI8扩展. 确定PHP可以链接ORACLE数据库之后.我们使用composer安装laravel支持oracle链接的插件 yaj ...

  8. ueditor集成实例php,Laravel框架集成UEditor编辑器的方法图文与实例详解

    本文实例讲述了Laravel框架集成UEditor编辑器的方法.分享给大家供大家参考,具体如下: 一. 背景 在项目开发的过程中,免不了使用修改功能,而富文本编辑器是极为方便的一种推荐,当然,个人认为 ...

  9. laravel框架的基础学习路线(不带composer的)

    首先,博主这里一直用的都是laravel的一键安装包,所以一直没有用composer来操作过laravel.很多事情不用composer也能完成.这里主要是写给公司同事的一个laravel框架入手顺序 ...

最新文章

  1. 自从上线了 Prometheus 监控告警,真香!
  2. js计算前三个月的时间精确到时分秒
  3. BZOJ3675: [Apio2014]序列分割
  4. 介绍 WebLogic 的一些结构和特点
  5. Tips - C++
  6. Java面试170题答案解析(1-20题)
  7. 玩转大数据系列之三:数据报表与展示
  8. android 蒙版图片带拖动_黑橙修图:新手入门篇2-一句话带你认识图层蒙版
  9. MySQL 服务的启动与停止
  10. 数据库基本----SQL语句大全(转载)
  11. 使用pyautogui自动刷微信表情
  12. 使用QRCode.js生成二维码
  13. 精华 | 网络故障排除命令汇总【网工必须收藏】
  14. 阙值,阈值,阀值,傻傻分不清
  15. 寒冬季的建议:别麻木,别脱产,别放弃规划
  16. bugkuctf never give up
  17. Speedoffice(excel)如何加粗边框线条
  18. Win10:鼠标右键如何添加快捷关机、注销等功能
  19. 计算机丢失quartz.dll什么意思,计算机中丢失quartz.dll解决方法
  20. 英雄互娱A股上市路:被收购、独立IPO、借壳均被按下暂停键

热门文章

  1. 过敏性皮肤、春天皮肤过敏、皮肤过敏--皮肤过敏怎么办?
  2. 关于contentWindow和contentDocument
  3. 精选10个Python库,几行代码轻松搞定探索性数据分析!
  4. Linux 环境下Java环境变量配置
  5. MySQL时区问题日期时差8个小时,解决方法
  6. outlook计算机应用操作题,全国统考计算机应用基础outlook操作题(总13页).doc
  7. OPPO R15x在哪里打开usb调试模式的详细流程
  8. Android service启动流程分析.
  9. 数据结构与算法训练:第十一弹
  10. php清空mysql数据表,mysql怎么清空数据表数据