php - 无法使用 Laravel Eloquent 的现有表

标签 php mysql laravel eloquent

所以我一直在尝试遵循一些在线链接来了解如何使用 eloquent 来定义表中的关系。我实际上想尝试的是使用现有的表来创建模型,然后使用 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,
        ],

    ],

];

最佳答案

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

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

use App\Article;

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

或者,在调用 all() 之前,如下所示:

\App\Article:all();

但请确保您执行其中一项,而不是同时执行两项,因为这是不必要的。

关于php - 无法使用 Laravel Eloquent 的现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53367901/

相关文章:

php - 使用 Facebook Graph Api 搜索帖子

php - HTML 不显示在 IF 语句中 (Wordpress)

php - 将 boolean 值转换为整数值php

php - 基于已知值的无冲突、简短且唯一的仅整数哈希

php - laravel belongsToMany 过滤器

php - 无法从 Laravel 5 删除请求中的路由访问资源 ID?

php - 获取两种数据并显示出来

mysql - 将表与一对一关系组合起来

mysql - 存储过程在循环中连接选择

php - 用内容模拟上传的文件