gpt4 book ai didi

php - Eloquent(没有 Laravel)从具有动态名称的表中获取数据

转载 作者:行者123 更新时间:2023-11-29 10:14:24 26 4
gpt4 key购买 nike

我确信这是一个完全简单的问题,但我一生都被困在这里 - 由于 PHP 限制,我们在 Laravel 之外使用 Eloquent。我有一个正在尝试更新的支持票证跟踪应用程序。此应用程序的数据结构是这样的,每个票证在提交时都会分配一个 UUID,并生成一个以该 UUID 作为名称的表,并且对票证的所有更改都会作为该表中的新条目进行跟踪。

按照 Eloquent 上的一些教程,我设置了模型和 Controller 并使其工作,但对于每个模型和 Controller ,我看到我正在模型本身中定义表名称。 IE 我们的票证模型是

namespace Models;
use \Illuminate\Database\Eloquent\Model;

class Ticket extends Model {
protected $table = 'tickets';
protected $fillable = [table columns here];
}

票证 Controller 中调用的任何内容都可以正确并成功地读取数据并将数据写入我们的票证表。

所以...我的问题是:我将如何读取/写入/创建/删除前面提到的 UUID 表?

我尝试过内置表选择器(即 - DB::table(uuid here)DB::setTable(uuid here) 但无济于事.我收到 fatal error :调用未定义的方法 Models\Database::setTable()

我想要的是一个模型/ Controller ,我可以将其重用于任何动态命名的表。

最佳答案

您可以创建一个通用模型并动态设置表名称,如下所示:

namespace Models;
use \Illuminate\Database\Eloquent\Model;

class FormerUUIDTicket extends Model {
protected $table = 'some_table';
protected $fillable = [table columns here];
}

class SomeController
{
public function someAction()
{
$uuid = $_POST['uuid_field']; //some uuid, the table name
$model = new FormerUUIDTicket;
$model->setTable($uuid);
return $model->get(); //do anything using eloquent with proper table
}
}

确保在使用前始终设置表名,否则会失败。出于同样的原因,也不要使用静态函数。

关于php - Eloquent(没有 Laravel)从具有动态名称的表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335864/

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