Php Eloquent(不带Laravel)使用动态名称从表中获取数据

Php Eloquent(不带Laravel)使用动态名称从表中获取数据,php,mysql,dynamic,eloquent,Php,Mysql,Dynamic,Eloquent,我相信这是一个非常简单的问题,但对于我来说,我被困在这里了——由于PHP的限制,我们使用的是Laravel之外的雄辩。我有一个正在尝试更新的支持票证跟踪应用程序。 此应用程序的数据结构是,提交时为每个票证分配一个UUID,并生成一个以该UUID为名称的表,对票证的所有更改都作为该表中的新条目进行跟踪 根据一些关于Eloquent的教程,我设置了我们的模型和控制器并开始工作,但是对于每一个,我看到我在模型本身中定义了表名。我们的机票型号是 namespace Models; use \Illumi

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

根据一些关于Eloquent的教程,我设置了我们的模型和控制器并开始工作,但是对于每一个,我看到我在模型本身中定义了表名。我们的机票型号是

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

class Ticket extends Model {
   protected $table = 'tickets';
   protected $fillable = [table columns here];
}
而在tickets控制器中调用的任何东西都可以正确且成功地将数据读写到tickets表中

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

我在这里尝试了内置的表选择器ie-DB::tableuuid,在这里尝试了DB::setTableuuid,但没有效果。我得到一个致命错误:调用未定义的方法Models\Database::setTable


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

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

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
    }
}

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

我知道你要做什么了。。。我怎么能从我的核心行动文件中调用它?比如,现在当有人单击“编辑此票证”时,它会从我们的票证表中提取该票证的UUID,将其设置为$UUID,然后我们会从$UUID查询中选择诸如此类的内容。谢谢,顺便说一句-我是MVC框架的新手,类关系总是把我弄得一团糟。如果我理解正确,您将获得作为表单输入的信息。将此设置为$uuid变量并用作代码show.AH!我想我明白了。让我做几个测试。谢谢好吧,这很有效!我不知道您是否有解决方案的一个小问题是,我得到了严格的标准:非静态方法控制器\Uuids::someAction不应该在/[filepath to core actions file]中静态调用。我们所有的动作调用都是通过AJAX请求从前端发送到core.php的,这是一个很长的故事,它将我们所有的控制器和库以及其他东西连接起来,然后定义特定的动作。这些操作调用各种控制器和数据集,然后根据操作的返回和类型触发其他操作。我希望这是有道理的。