【问题标题】:Lumen: Using Eloquent in Lumen ProjectLumen:在 Lumen 项目中使用 Eloquent
【发布时间】:2023-03-15 09:00:01
【问题描述】:

取消注释后,我在 Lumen 项目中使用 Eloquent

$app->withEloquent();

在 bootstrap/app.php 文件中,我在我的项目中为模型类创建了 database/models 文件夹。每当我在数据库/模型中添加一个类并尝试使用它时,它会抛出并且找不到类异常,但是在运行 composer dump-autoload 之后,该类就可以使用了。我怎样才能自动化这个,就像在数据库/模型中添加类模型并使用它,就像我们在 Laravel 中所做的那样。

这是我的模型类。

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model{

    protected $table = 'posts';

    protected $fillable = array(
        'id',
        'p_id',
        'username',
        'title',
        'uri',
        'source',
        'points',
        'status',
        'language',
        'type',
    );
}

这是我尝试使用此模型的控制器。

<?php namespace App\Http\Controllers;

use App\Post;

class ContentController extends BaseController{
    public function posts(Request $request){
        return Post::all();
    }
}

这是我的 composer.json 文件

{
    "name": "laravel/lumen",
    "description": "The Laravel Lumen Framework.",
    "keywords": ["framework", "laravel", "lumen"],
    "license": "MIT",
    "type": "project",
    "require": {
        "laravel/lumen-framework": "5.1.*",
        "vlucas/phpdotenv": "~1.0",
        "illuminate/mail": "5.1.*"
    },
    "require-dev": {
        "phpunit/phpunit": "~4.0",
        "fzaninotto/faker": "~1.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/",
            "database/models"
        ]
    },
    "autoload-dev": {
        "classmap": [
            "tests/"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

【问题讨论】:

    标签: php laravel eloquent composer-php lumen


    【解决方案1】:

    将您的模型从 database/models 移动到 app/models 并将命名空间更改为 App\Models,一切都应该正常工作。

    当使用 composers classmap 查找类时,composer 仅在运行composer dump-autoload 时缓存路径。通过使用 PSR-4 类加载,composer 可以通过查看文件的命名空间来找到文件。您的 App 命名空间配置为在路径 app 中,并且 composer 开始在那里寻找它们。

    【讨论】:

      【解决方案2】:

      你应该将你的模型保存在 app/ 目录中,由于基础 lumen composer.json,它作为自动 PSR-4 类自动加载

      【讨论】:

        【解决方案3】:

        如果你想尝试移动 bas Model 文件夹,我认为你应该将模型保留在 app\Models 中,只需尝试在 PSR-4 的自动加载部分添加文件夹并为它们指定命名空间

        {
        "name": "laravel/lumen",
        "description": "The Laravel Lumen Framework.",
        "keywords": ["framework", "laravel", "lumen"],
        "license": "MIT",
        "type": "project",
        "require": {
            "laravel/lumen-framework": "5.1.*",
            "vlucas/phpdotenv": "~1.0",
            "illuminate/mail": "5.1.*"
        },
        "require-dev": {
            "phpunit/phpunit": "~4.0",
            "fzaninotto/faker": "~1.0"
        },
        "autoload": {
            "psr-4": {
                "App\\": "app/"
            },
            "classmap": [
                "database/",
                "database/models"
            ]
        },
        "autoload-dev": {
            "classmap": [
                "tests/"
            ]
        },
        "config": {
            "preferred-install": "dist"
        }
        }
        

        {
        "name": "laravel/lumen",
        "description": "The Laravel Lumen Framework.",
        "keywords": ["framework", "laravel", "lumen"],
        "license": "MIT",
        "type": "project",
        "require": {
            "laravel/lumen-framework": "5.1.*",
            "vlucas/phpdotenv": "~1.0",
            "illuminate/mail": "5.1.*"
        },
        "require-dev": {
            "phpunit/phpunit": "~4.0",
            "fzaninotto/faker": "~1.0"
        },
        "autoload": {
            "psr-4": {
                "App\\": "app/",
                "Database\\Models\\:"database/models"
            },
            "classmap": [
                "database/",
            ]
        },
        "autoload-dev": {
            "classmap": [
                "tests/"
            ]
        },
        "config": {
            "preferred-install": "dist"
        }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-20
          • 2016-06-23
          • 2020-03-24
          • 2019-05-10
          • 1970-01-01
          • 2019-01-22
          • 1970-01-01
          • 2016-03-24
          相关资源
          最近更新 更多