我有一个为遗留php应用程序创建的数据库。我正在将此数据库导入新的Laravel应用程序。
这个DB有1900个表具有相同的结构,列名和其他所有表只有不同的名称。但每个表中都有不同的数据。具体而言,每个表属于交易所的股票,每个股票具有高,低和收盘价的不同数据。
此表格已从名为stock的单个表格中复制,使用' like'进行复制。命令在mysql中。
我的问题是如何在不创建1900迁移或模型文件的情况下导入这些数据库。我已经在网上对其进行了广泛的研究,但是甚至可以找到任何类似的问题。
答案 0 :(得分:-1)
一个选项是创建动态迁移和动态模型。
<强>移植强>
public function up()
{
for ($i = 1; $i < 1900; $i++) {
Schema::create('flights' . $i, function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
}
public function down()
{
for ($i = 1; $i < 1900; $i++) {
Schema::drop('flights' . $i);
}
}
<强>模型强>
class Flight extends Model
{
//
protected $table = 'my_flights';
public function change_table(string $table) {
$this->table = $table;
}
}
现在您可以动态更改相应的表格,同时保留模型的所有其他属性和功能
答案 1 :(得分:-1)
这可以很容易地用单个表格来处理
航班迁移文件
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->string('stock_name'); // store stock name in this attribute
$table->timestamps();
});
}
public function down()
{
Schema::drop('flights');
}
飞行模型
class Flight extends Model
{
protected $table = 'flights';
// Scope to find data from a particular stock
public function scopeStock($q, $stockName)
{
return $q->where('stock_name', $stockName);
}
}
现在您可以搜索下面的任何特定股票表
$stockName = 'flight1';
$data = Flight::stock($stockName)->get(); // search using the scope
//or
$data = Flight::where('stock_name', 'flight1')->get(); // or do a query
简单易行......! :)