无法将现有表用于laravel Eloquent

时间:2018-11-19 03:24:08

标签: php mysql laravel eloquent

所以我一直在尝试一些在线链接,以了解如何在表中定义表述时使用雄辩。我实际上想尝试的是使用现有表创建模型,然后使用表述来定义关系。 现在,我不再使用迁移,因为我已经创建了表并在database.php以及.env文件中配置了连接和其他设置(mysql)。

关注是我的文章模式:

<?php

namespace App;


use Illuminate\Database\Eloquent\Model;


class Article extends Model
{

 protected $table = 'articles';

}

由于我不使用任何迁移,因此我已经指定了表名(文章),并且已经在其中插入了一些数据。 现在,只是为了检查模式是否正常工作,我尝试在web.php中给出如下路由:

<?php

Route::get('/', function () {

    echo Article::all();
});

但是现在尝试在服务器上运行该命令时,出现一个错误消息“找不到类文章”。这里似乎是什么问题?

以下是我的.env文件:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:RVOuXWd9zPWrrdIEIHoezPBrfQqHPTihq4WUgXk3xjU=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=shetty@123
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

以下是database.php文件:

<?php

return [


    'default' => env('DB_CONNECTION', 'mysql'),
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'test'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'shetty@123'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
        ],

    ],


    'migrations' => 'migrations',


    'redis' => [

        'client' => 'predis',

        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

];

1 个答案:

答案 0 :(得分:1)

问题是您的Article类与路由文件位于不同的命名空间中。

在路由文件顶部包括以下语句:

/<<.+.txt>>/gm

您现在可以在路线闭合中将Article类引用为Article :: method();

或者,也可以在调用all()之前这样:

use App\Article;

但是请确保您做一个或另一个,不要两者都做,因为这是不必要的。