我有 3 个具有相同架构的表
我用这个结构来处理它
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ReportValues extends Model
{
use HasFactory;
protected $fillable = [
'id',
'user_id',
'report_id',
'item_id',
'value',
];
public function scopeGenerate($query, $type, $date){
$table_name = $type."_".$date;
if (!Schema::hasTable($table_name)){
Schema::create($table_name, function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->integer('report_id');
$table->integer('item_id');
$table->tinyText('value');
$table->unique(['report_id', 'item_id', 'user_id']);
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('item_id')->references('id')->on('report_items');
});
}
return $query;
}
public function scopeSalaries($query, $date){
$this->table = 'salaries_'.$date;
return $this;
}
public function scopeContracts($query, $date){
$this->table = 'contracts_'.$date;
return $this;
}
}
然后使用这个命令来使用它们:
为每个月的客户工资生成表格:
ReportValues::generate('salaries', '202101')
然后
ReportValues::salaries('202101')->get()
或生成每年的合同表
ReportValues::generate('contracts', '202101')
然后
ReportValues::contracts('2021')->get()
我的桌子是:
salaries_202101
contracts_2021