在 Laravel 模型中禁止使用全局表前缀 DB_PREFIX

$query = new User();

$query->getConnection()->setTablePrefix('');

如果是想禁用某个模型中的前缀,可以使用 $connection

<?php
namespace App\Models;


use Illuminate\Database\Eloquent\Model;

class Userextends Model
{
    protected $connection = 'no_prefix_mysql';

    protected $table = 'user';

}

然后再database的数据库配置文件中添加没有前缀的配置,prefix设为''

<?php

use Illuminate\Support\Str;

return [

    'connections' => [

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => 'jd_',
            'prefix_indexes' => true,
            'strict' => false,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],


        'no_prefix_mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => false,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

    ],

];

ThinkPHP 5引用远程库(例如第三方包数据库操作类)时,如果你想要去除数据的默认前缀,通常需要在使用数据库连接或者操作数据之前,自定义设置前缀。 首先,你需要了解你正在使用的远程库是否提供了设置前缀的方法。如果没有直接提供,你可以通过覆盖其内部配置或者创建一个新的数据库实例并指定自定义的配置来实现。 这里是一个基本步骤: 1. **检查文档**:查看远程库的官方文档,看是否有专门用于设置前缀的API或配置项。 2. **修改配置**:如果有的话,可以在项目的配置文件(如`config.php`或特定数据库配置文件),找到数据库连接相关的部分,比如`DB_PREFIX`,将其设为空字符串`''`或`null`。 ```php // 如果是在全局配置里 'app_database' => [ 'default' => [ // ... 'DB_PREFIX' => '', // 或者 null ], ], // 或者在特定数据库配置里 'default' => [ 'database_type' => 'mysql', 'database_name' => '', 'hostname' => 'localhost', 'username' => '', 'password' => '', 'DB_PREFIX' => '', // 设置为 '' ], ``` 3. **动态修改**:如果你不想修改配置,也可以在每次操作数据库之前,手动处理名。例如,在使用ORM模型的时候,可以这样操作: ```php use think\Db; $realTableName = Db::table('your_table_without_prefix')->getTableName(); // 获取去掉前缀名 $yourModel = new YourModel($realTableName); // 使用这个名创建模型 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值