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'))
}
3 Antworten
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.
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();
}
Eloquente Modelle haben eine getTable
Funktion, damit Sie die Tabelle für ein Modell wie dieses erhalten können:
(new EnergyData())->getTable();
Neue Fragen
laravel
Laravel ist ein kostenloses Open-Source-PHP-Webframework, das von Taylor Otwell erstellt wurde und für die Entwicklung von Webanwendungen nach dem MVC-Architekturmuster (Model-View-Controller) vorgesehen ist und auf Symfony basiert. Der Quellcode von Laravel wird auf GitHub gehostet und unter den Bedingungen der MIT-Lizenz lizenziert.