Skip to content

Commit

Permalink
Fix SchemaFactoryMakeCommand.php for laravel 11
Browse files Browse the repository at this point in the history
Fix this code to work with laravel 11
  • Loading branch information
capimichi authored Jul 11, 2024
1 parent c96beaf commit 6c0c80f
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions src/Console/SchemaFactoryMakeCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,19 +48,26 @@ protected function buildModel($output, $model)

$columns = SchemaFacade::connection($model->getConnectionName())->getColumnListing(config('database.connections.'.config('database.default').'.prefix', '').$model->getTable());
$connection = $model->getConnection();


$tableName = config('database.connections.'.config('database.default').'.prefix', '').$model->getTable();


$definition = 'return Schema::object(\''.class_basename($model).'\')'.PHP_EOL;
$definition .= ' ->properties('.PHP_EOL;

$properties = collect($columns)
->map(static function ($column) use ($model, $connection) {
/** @var Column $column */
$column = $connection->getDoctrineColumn(config('database.connections.'.config('database.default').'.prefix', '').$model->getTable(), $column);
$name = $column->getName();
$default = $column->getDefault();
$notNull = $column->getNotnull();

switch (get_class($column->getType())) {
->map(static function ($columnName) use ($model, $connection, $tableName) {
// /** @var Column $column */
// $column = $connection->getDoctrineColumn(config('database.connections.'.config('database.default').'.prefix', '').$model->getTable(), $column);
$columnType = $connection->getSchemaBuilder()->getColumnType(
$tableName,
$columnName
);
$name = $columnName;
$default = $connection->select("SELECT COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$tableName' AND COLUMN_NAME = '$columnName'")[0]->COLUMN_DEFAULT;
$notNull = $connection->select("SELECT IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$tableName' AND COLUMN_NAME = '$columnName'")[0]->IS_NULLABLE === 'NO';

switch ($columnType) {
case IntegerType::class:
$format = 'Schema::integer(%s)->default(%s)';
$args = [$name, $notNull ? (int) $default : null];
Expand Down

0 comments on commit 6c0c80f

Please sign in to comment.