Laravel 8 – Eloquent 没有数据库迁移的查询

Laravel 8 – Eloquent Queries Without Database Migration

我是 Laravel 的新手,但我是老派 PHP 开发人员。我正在调整我的框架以适应 Laravel 框架。

目前我的主要目标是使用 eloquent 查询而不在 Laravel 中执行数据库架构和迁移,因为我已经建立了数据库 运行 .

到目前为止,我已经成功地使用 eloquent 查询与我的数据库进行交互。这是可以正常工作的部分代码:

$results = DB::table('my_table')->where('id', '=', 123)->orderBy('title')->get()->toArray();

问题是当我试图限制我想从数据库中检索的字段时。到目前为止,我已经尝试过:

->select('id', 'title', 'description')

->get('id', 'title', 'description')

它 returns 我是这样的错误:

Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column ' title' in 'field list' (SQL: select id, title, description from categories where id_parent = 781 and activation = 1 order by title asc) A column was not found You might have forgotten to run your migrations. You can run your migrations using php artisan migrate. Pressing the button below will try to run your migrations.**

我知道我可能可以通过原始查询来完成此操作,但我的目的是使用 Laravel 的一些在科技公司中广泛使用的功能。那么,是否有可能在无需构建数据库模式和所有迁移过程的情况下使用 eloquent 查询来完成我正在尝试的工作?如果是这样,方法是什么?

我不想开发迁移和架构的主要原因之一是我的数据库在我的框架内有一个表的前缀,我根据每个项目/客户更改并且我不想花一些时间研究如何使用前缀等构建迁移/架构。

我检查了这个 Whosebug link: Laravel without Eloquent & database migrations? 但这并不是我想要的。

编辑 - 解决方案: 问题出在列名称上有额外 space 的错误。所以,以下工作:

$results = DB::table('my_table')->select('id', 'title', 'description')->where('id', '=', 123)->orderBy('title')->get()->toArray();

请检查您的列名。 他们必须没有 wihtespaces