簡體   English   中英

雄辯的(WITHOUT Laravel)從具有動態名稱的表中獲取數據

[英]Eloquent (WITHOUT Laravel) get data from table with dynamic name

我確定這是一個非常簡單的問題,但是對於我一生來說,我一直被困在這里-由於PHP的限制,我們在Laravel之外使用Eloquent。 我有一個正在嘗試更新的支持票證跟蹤應用程序。 此應用程序的數據結構是,在提交時為每個票證分配了一個UUID,並生成了一個具有該UUID作為其名稱的表,並且對該票證的所有更改都作為該表中的新條目進行了跟蹤。

在關於Eloquent的一些教程之后,我建立並運行了我們的模型和控制器,但是對於每一個我都看到我在模型本身中定義了表名。 IE,我們的票務模型是

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

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

以及在票證控制器中正確調用的所有內容,並成功地將數據讀寫到tickets表中。

所以...我的問題是:我將如何去讀取/寫入/創建/刪除那些先前提到的UUID表?

我嘗試了內置的表選擇器(即DB::table(uuid here)DB::setTable(uuid here)DB::setTable(uuid here)但無濟於事。我得到了Fatal error: Call to undefined method 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
    }
}

確保在使用前始終設置表名,否則它將失敗。 出於相同的原因,也不要使用靜態函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM