gpt4 book ai didi

Laravel 使用 mysql View 而不是表本身从数据库中检索记录

转载 作者:行者123 更新时间:2023-12-04 21:28:25 24 4
gpt4 key购买 nike

我知道这是一个简单的问题,我努力寻找解决方案。也许有人已经知道或经历过这可能对我有帮助。

我只是 Laravel 的初学者,请耐心等待。

所以我有这个AgencyModel,我的表在数据库中的名称是agency。我有一个名为 view_agency 的 MySQL view,它包含 agency 表和与其相关的其他表的内部连接。

模型(这是工作代码)

  protected $table = 'agency';

当我使用agency作为表名时显示的记录

但是 MySQL View 表 view_agency 不显示/检索数据库中的记录。

模型(此代码无效)

protected $table = 'view_agency';

我怀疑 laravel eloquent 可能与此有关,因为 $table 仅被接受而不是 mysql View 。

use Illuminate\Database\Eloquent\Model;

谢谢...

最佳答案

In SQL, a view is a virtual table based on the result-set of an SQL statement.

而且你可以从 View 中获取数据就像表的数据一样:

select * from view_agency

所以你可以使用 Laravel 查询构建器或 Eloquent 构建器来查询像表这样的记录,

Laravel 会将查询构建器或 Eloquent 转换为 sql,因此它可以工作:

DB::table('view_agency')->get();

我以前这样做过,我在models/里面创建了一个views/目录,并在里面创建了所有 View 的文件。

我认为您可以像这样创建 View 模型:

namespace App\Models\Views;

use Illuminate\Database\Eloquent\Model;
class ViewAgency extends Model {
}

但是,我正在遵循 laravel 的方式。我使用小写下划线复数形式。因此,当我使用 ViewAgency 时,Laravel 会找到 tableview 的名称,即 view_agencies:

ViewAgency::first();

它工作正常。

如果你想更改名称,我认为 protected $table = 'view_agency;' 没有错误,你可以尝试这种方式:

class ViewAgency extends Model {
public function __construct()
{
$this->setTable('view_agency');
}
}

这也行

关于Laravel 使用 mysql View 而不是表本身从数据库中检索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com