How to use global prefix for tables in Laravel 5

后端 未结 3 1115
猫巷女王i
猫巷女王i 2020-12-19 05:39

New in Laravel. Probably a silly question. I had setup database like this:

\'mysql\' => [
        \'driver\' => \'mysql\',
        \'host\' => env(\         


        
相关标签:
3条回答
  • 2020-12-19 06:05

    Prefix does not includes underscore (_) by itself. In order to create admin_users You have to use admin_ prefix.
    When generating migrations You will get plain table names, without prefixes.

    With prefix = 'admin_'; this: Schema::create('users', function (Blueprint $table) {<...>}); will result in creation of admin_users table, because Laravel adding Your prefix under the hood by default.


    TL;DR

    Even though Your scheme displays table name without prefix, Laravel will create it with prefix.

    0 讨论(0)
  • 2020-12-19 06:08

    Laravel caches config files, so you may simply need to clear the cache:

    php artisan config:clear
    

    In addition to this, a better practice is to use the .env file to define your prefix, like this:

    ...
    DB_PREFIX=admin_
    ...
    

    and loading that in your config file, like this:

    'prefix' => env('DB_PREFIX', 'abc')
    

    This is how it should have been by default.

    You're already loading the hostname and port from the .env file, so why not do it for the other values as well?

    0 讨论(0)
  • 2020-12-19 06:24

    The migrations will be created without a prefix. After running php artisan migrate you should see tables with prefixes

    0 讨论(0)
提交回复
热议问题