Добавление дополнительных полей в таблицу в Laravel: миграции, необработанные SQL-запросы и модели Eloquent

Чтобы добавить дополнительное поле в таблицу в Laravel, у вас есть несколько способов. Вот несколько примеров с фрагментами кода:

Метод 1: использование миграции
Миграции — это удобный способ управления изменениями схемы базы данных в Laravel. Чтобы добавить новое поле, выполните следующие действия:

Шаг 1. Создайте новый файл миграции.
Выполните следующую команду в терминале, чтобы создать новый файл миграции:

php artisan make:migration add_field_to_table --table=your_table_name

Замените your_table_nameфактическим именем таблицы, в которую вы хотите добавить поле.

Шаг 2. Откройте созданный файл миграции.
Найдите вновь созданный файл миграции в каталоге database/migrations. Откройте файл и найдите метод up.

Шаг 3. Добавьте поле в схему таблицы.
Внутри метода upиспользуйте фасад Schema, чтобы добавить новое поле. Вот пример добавления столбца new_fieldтипа string:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
public function up()
{
    Schema::table('your_table_name', function (Blueprint $table) {
        $table->string('new_field')->nullable();
    });
}

Шаг 4. Запустите миграцию.
Выполните команду миграции, чтобы применить изменения к базе данных:

php artisan migrate

Это обновит таблицу новым полем.

Метод 2: использование необработанных SQL-запросов
Вы также можете добавить новое поле в таблицу с помощью необработанных SQL-запросов. Вот пример:

use Illuminate\Support\Facades\DB;
public function addFieldToTable()
{
    $tableName = 'your_table_name';
    $fieldName = 'new_field';

    DB::statement("ALTER TABLE $tableName ADD COLUMN $fieldName VARCHAR(255) NULL");
}

Замените your_table_nameна фактическое имя таблицы, а new_fieldна нужное имя поля.

Метод 3. Использование модели Eloquent
Если вы используете модели Eloquent, вы можете добавить новое поле, изменив соответствующий класс модели:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
    protected $fillable = ['new_field'];
}

Добавьте 'new_field'в массив $fillableвашей модели. Это позволяет массово назначать новое поле при создании или обновлении записей.