注册
dm适配Laravel
专栏/Database Thinking/ 文章详情 /

dm适配Laravel

胡li 2022/11/11 3130 2 6
摘要 1、可直接在laravel使用其他数据库开发的项目上直接进行修改,需要修改项目根目录下的composer.json和config/app.php的其他数据库配置删除,.evn文件其他数据库的连接配置和代码里连接其他数据库的配置删除; 2、创建数据库参考以下命令,不敏感,字符集为utf-8。 ./dminit path=../data page_size=32 extent_size=32 CASE_SENSITIVE=0 CHARSET=1; 3、参考文档: Laravel开发文档:https://learnku.com/docs/laravel/8.x/eloquent/9400 DM适配文档: https://packagist.org/packages/jackfinal/laravel-dm8 https://gitee.com/jackfinal/laravel-dm8

1、软件说明

软件名称 版本
操作系统 windows10
laravel 8.6.12
Php 7.4.33nts
Composer 2.4.4
达梦数据库 V8

2、PHP开启DM扩展

到数据库服务器的%DM_HOME%\drivers\php_pdo目录,将二个扩展文件复制到php文件夹里面的ext文件夹里面
extension=pdo74nts_dm.dll
extension=php74nts_dm.dll
配置php.ini,截图如下:
image.png

2.1 拷贝DM依赖组件

到数据库服务器的%DM_HOME%\drivers\dpi,找到以下dll文件
dmdpi.dll
dmclientlex.dll
dmutl.dll
dmstrt.dll
dmshm.dll
dmos.dll
dmmsg.dll
dmmout.dll
dmmem.dll
dmelog.dll
dmdta.dll
dmdcr.dll
dmcyt.dll
dmcvt.dll
dmcpr.dll
dmcomm.dll
dmcfg.dll
dmcalc.dll
放到php根目录

2.2 配置php的环境变量到path

参考windows 10配置PATH环境变量
截图如下:
image.png

3、安装composer

3.1 下载composer

https://getcomposer.org/download/
截图如下:
image.png

3.2 根据步骤安装composer

(如果是直接引用项目,则2.2步骤可全部忽略,直接启动程序即可)
1、更新源

composer config -g repo.packagist composer https://packagist.org

2、cd到项目存放的目录,再执行以下命令创建项目

composer create-project --prefer-dist laravel/laravel learnlaravel8

截图如下:
image.png
3、Cd 到创建的learnlaravel8项目目录,执行以下命令安装依赖包

composer require jackfinal/laravel-dm8

截图如下:
image.png

4、Cd 到创建的learnlaravel8项目目录,执行以下命令,创建dm.php配置文件

php artisan vendor:publish --tag=dm

截图如下:
image.png

4、配置laravel使用DM数据库

(以下文件均在learnlarave18项目目录)

 在项目根目录,修改.env
修改DB_CONNECTION的值

DB_CONNECTION=dm
DB_HOST=x.x.x.x
DB_PORT=5236
DB_DATABASE=DAMENG
DB_USERNAME=SYSDBA
DB_PASSWORD=SYSDBA

截图如下:
image.png

5、配置代码访问DM数据库

5.1 MODEL文件

在项目的根目录app\Models生成model文件
Cd到项目根目录,执行以下命令,或者直接在项目中新建文件

php artisan make:model UserModel

修改app\Models\UserModel.php文件中的相关信息。制定数据库连接和表名。
代码如下:

use  HasFactory;

protected $connection = 'dm';
protected $table='users';//真实表名
protected $fillable=['NAME','AGE'];//可以操作的字段
public $timestamps=false;//不需要laravel自动管理创建时间与修改时间

5.2 CONTROLLER文件

在项目根目录App\Http\Controllers生成控制器文件,也可直接创建php文件
php artisan make:controller UserController
并修改里面的信息,代码如下:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\UserModel;
use DB;

class UserController extends Controller
{
   //查询列表
    public function lst()
    {
       $data=UserModel::all();
       return view('orm.lst', ['data' => $data]);
    }

    //增加用户信息
    public function add(Request $request)
    {
        if($request->isMethod('get')){
            //显示视图
         return view('orm.add');

        }elseif($request->isMethod('post')){
             $usermodel = new UserModel;
               $usermodel->name = $request->name;
               $usermodel->age = $request->age;
               if($usermodel->save()){
           //插入成功
                return redirect('/lst');
           }else{
           //插入失败
                return redirect('/orm/add');
           }
        }
    }

    //修改用户信息
    public function edt(Request $request,$id)
    {

      if($request->isMethod('get')){
            //显示视图
         $info=UserModel::find($id);
         return view('orm.edt',['info'=>$info]);
        }elseif($request->isMethod('post')){

         //方法一
          $info=UserModel::find($id);
          $info->name=$request->input('name');
          $info->age=$request->input('age');

           if($info->save()){
           //插入成功
                return redirect('/lst');
           }else{
           //插入失败
                return redirect('/orm/edt'.$id);
           }
        }
    }

    //删除用户信息
    public function del($id)
    {
        $users=UserModel::find($id);
        $users->delete();

        return redirect('/lst');
    }
}

5.3 配置路由

在项目根目录routes\web.php,添加如下代码,截图如下:

代码如下:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
use App\Http\Controllers\Tcontrollers;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});
Route::get('/lst',[UserController::class, 'lst']);
Route::match(['get','post'],'/orm/add/',[UserController::class, 'add']);
Route::match(['get','post'],'/orm/del/{name}',[UserController::class, 'del']);
Route::match(['get','post'],'/orm/edt/{name}',[UserController::class, 'edt']);//->where('id','\d+');// \d+表示 id必须是数字

5.4 配置视图文件

到项目根目录resources\views,创建orm目录,在orm目录下面创建三个增删改查的视图

5.4.1 Lst查询视图

文件名称lst.blade.php,代码如下:

    <body>
        <h1>用户列表</h1>
         <a href="/orm/add/">添加</a>
         <hr>
        @foreach ($data as $v)

            id:{{$v->id}} name:{{$v->name}} age:{{$v->age}}
            <a href="/orm/edt/{{$v->id}}">编辑</a>
            <a href="/orm/del/{{$v->id}}">删除</a>
            <hr>
        @endforeach
    </body>

5.4.2 Edt视图

编辑数据视图,文件名edt.blade.php,代码如下:

    <body>
        <h1>修改用户</h1>
        <form action="/orm/edt/{{$info->id}}" method="post">

           {{csrf_field()}}
            用户名:<input type="text" name="name" value="{{$info->name}}">
            年  龄:<input type="text" name="age" value="{{$info->age}}">
            <input type="submit" name="btn" value="提交">
        </form>
    </body>

5.4.3 Add视图

文件名add.blade.php,新增视图,代码如下:

    <body>
        <h1>添加用户</h1>
        <form action="/orm/add" method="post">
           {{csrf_field()}}
            用户名:<input type="text" name="name">
            年  龄:<input type="text" name="age">
            <input type="submit" name="btn" value="提交">
        </form>
    </body>

6、创建表

创建数据库参考以下命令,不敏感,字符集为utf-8

./dminit path=../data page_size=32 extent_size=32 CASE_SENSITIVE=0 CHARSET=1

创建表和插入数据

CREATE TABLE "SYSDBA"."users"
(
"id" INT IDENTITY(1, 1) NOT NULL,
"name" VARCHAR2(50),
"age" INT,
NOT CLUSTER PRIMARY KEY("id")) ;

INSERT INTO "SYSDBA"."USERS"("NAME","AGE") VALUES('zhangsan',29);
INSERT INTO "SYSDBA"."USERS"("NAME","AGE") VALUES('王五_1',411);
INSERT INTO "SYSDBA"."USERS"("NAME","AGE") VALUES('苗苗1',551);
INSERT INTO "SYSDBA"."USERS"("NAME","AGE") VALUES('李风',30);
INSERT INTO "SYSDBA"."USERS"("NAME","AGE") VALUES('笑笑',122);
COMMIT;

7、启动项目

cd到项目根目录,启动项目

php artisan serve

截图如下:
image.png

8、访问网页结果

http://127.0.0.1:8000/lst

截图如下:
image.png

遇到的问题

问题1:

启动服务或者生成数据库配置文件时,出现以下错误
image.png
替换项目根目录的composer.json,修改config/app.php,重新执行命令。

解决办法如下:

composer.json中的require项增加以下代码:

 "jackfinal/laravel-dm8": "^1.0",

image.png

  • 将O的配置删除
    image.png
  • config\app.php,将o的配置删除
    image.png

问题2:

composer install遇到如下问题
image.png

  • 解决办法:
    到php目录,将php.ini中的fileinfo、curl扩展打开
    image.png
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服