Der Tabellenname ist MySQL. Ich habe diesen

energydata_1001
energydata_1002
energydata_1003
energydata_1004
energydata_1005

"energydata_prefix" ist die ID einer anderen Tabelle, sodass der Tabellenname abhängig von der Benutzerauswahl häufig in meiner Datenbanktabelle enthalten ist. Die Spaltentabelle ist dieselbe.



namespace App;
use Illuminate\Database\Eloquent\Model;
class EnergyData extends Model
{
    protected $table = 'energydata_';
}

Dies ist mein EnergyData Controller. Wie erhalte ich einen Tabellennamen wie energydata_1001?

namespace App\Http\Controllers;

use App\EnergyData;
use Illuminate\Http\Request;

class EnergyDataController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $gettableID = 1001;

        return view('energydata.index',compact('energydata_1001'))
    }
0
Syafiq Safiyan 19 Aug. 2020 im 09:10

3 Antworten

Beste Antwort

Ich nehme an, wenn Sie müssen, können Sie eine statische Variable für das Modell festlegen und diese verwenden, um den Tabellennamen zu generieren:

class Something extends Model
{
    protected $table = 'energydata_';

    static $tableId = null;

    public function getTable()
    {
        return $this->table . static::$tableId;
    }

    public static function tableId($tableId = null)
    {
        if (is_null($tableId)) {
            return static::$tableId;
        }

        static::$tableId = $tableId;
    }
}


Something::tableId('1001');

Dies ist möglich, aber möglicherweise nicht die beste Lösung.

1
lagbox 19 Aug. 2020 im 06:22

Wenn Sie dem Tabellennamen dynamisch ein Präfix hinzufügen möchten, müssen Sie den Abfrage-Generator verwenden. Weisen Sie einer Variablen 'energydata_' zu, verketten Sie das Präfix und rufen Sie es mit dem Abfrage-Generator auf

public function index()
{
    $gettableID = 1001;

    $table_name = 'energydata_' . $gettableID;

    $users = DB::table($table_name)->get();
}
0
BillJustin 19 Aug. 2020 im 06:22

Eloquente Modelle haben eine getTable Funktion, damit Sie die Tabelle für ein Modell wie dieses erhalten können:

(new EnergyData())->getTable();
0
Jerodev 19 Aug. 2020 im 06:22