Жить без миграций Laravel // Yii2

WMix

герр M:)ller
Партнер клуба
и добавлю это в ветку мастер на продакшин.
оставь название для тренировок, но это все dev.
прод он не то чтоб о деньгах, хотя чаще это оч важный фактор, это репутация
совсем дыряво, может и юридически откликнутся
 

StalkerClasses

Новичок
оставь название для тренировок, но это все dev.
прод он не то чтоб о деньгах, хотя чаще это оч важный фактор, это репутация
совсем дыряво, может и юридически откликнутся
Мне очень понравились идеии
1) интеллектуальных карт
2) шпаргалок
3) третью идею пока не очень знаю как назвать (аналог Figma только в html) - не знаю где найти.
Будут идеи велком.

Сейчас пока не знаю что лучше использовать markdown или HTML-редактор типа (TinyMCE - сейчас установлен на сайте).
 

StalkerClasses

Новичок
А мне понравились Автомиграции где описание струкиуры идёт в модели (laravel). Начал щупать на примере первой таблицы.

И расширить всегда можно. Колонки добавляются новые. Всегла видишь актуальную структуру таблицы в модели. Не обязательно лазить в бд. Единственное иноексы приходится проверять на существование и внешние ключи, они почему то не проверяются. Исходники смогу позже скинуть.
 

StalkerClasses

Новичок
Ещё понимаю почему например репозиторий, посевы уходят в отдельные файлы, но вот мтграции. Единственное пока не знаю как быть с переименованием таблиц и колонок.
 

StalkerClasses

Новичок
Исходник: https://github.com/iv-litovchenko/maptex/blob/master/app/Models/Technology.php

PHP:
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Kalnoy\Nestedset\NodeTrait;

/**
* App\Models\Technology
*
* @mixin \Eloquent
*/
class Technology extends Model
{
    public function migration(Blueprint $table)
    {
        $table->id();
        $table->nestedSet();
        $table->integer('branch_type')->default(0);
        $table->integer('branch_stop_flag')->default(0);
        $table->integer('is_page_flag')->default(0);
        $table->integer('is_draft_flag')->default(0);
        $table->unsignedBigInteger('user_id');
        $table->string('name')->nullable();
        $table->string('slug')->nullable();
        $table->text('description')->nullable();
        $table->text('description_tinymce')->nullable();
        $table->text('logo_image')->nullable();
        $table->integer('sorting')->default(0);
        $table->timestamps();

        // TODO добавление индекса...
        $table->index('user_id', 'technology_user_idx');
        // if (Schema::hasTable('users')) {
        //    $table->foreign('user_id', 'technology_user_fk')
        //        ->references('id')
        //        ->on('users');
        // }

        // TODO [не актуально!] в обычных миграциях последовательность удаления важна!
        // $table->dropForeign('technology_user_fk');
        // $table->dropIndex('technology_user_idx');
        // $table->dropColumn('user_id');
    }
}
Все прекрасно добавляется, удаляется одной командой migrage:auto (laravel)
Пакет который попробовал - composer "bastinald/laravel-automatic-migrations": "^3.0" (https://github.com/bastinald/laravel-automatic-migrations)

Единственное что не знаю как быть в случае переименования таблицы...
И у меня не получается почему-то запустить создание внешнего ключа


$table->foreign('user_id', 'technology_user_fk')
// ->references('id')
// ->on('users');

- но это больше наверное к doctrine/dbal и MySQL вопрос.

MySQL не хочет выполнять вот этот запрос от доктрины:
ALTER TABLE technologies ADD CONSTRAINT blabla FOREIGN KEY (user_id) REFERENCES users (id)
Именно вот эту часть... Если убрать CONSTRAINT blabla (или technology_user_fk) то все работает.
По крайней мере теперь вся структура таблицы в 1 файле а не разбросана в куче файлов. И нет такого понятия откатить, накатить. Добавил колонку выполнил миграцию, убрал колонку выполнил миграцию... Надо переименовать колонку - переименовал ее в zzz_... Тем самым сохранив данные.
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
Если бы у меня было столько упорства, я бы наверно уже стал бы музыкантом, как мечтал.
 

fixxxer

К.О.
Партнер клуба
Если бы у меня было столько упорства, я бы наверно уже стал бы музыкантом, как мечтал.
Черт, и я тоже. Наверное. )
Впрочем, я, похоже, десятилетний ресурс упорства сейчас израсходовал на понятно что. Ну да не суть. На чем играешь?)
 

StalkerClasses

Новичок
Черт, и я тоже. Наверное. )
Впрочем, я, похоже, десятилетний ресурс упорства сейчас израсходовал на понятно что. Ну да не суть. На чем играешь?)
Если бы у меня было столько упорства, я бы наверно уже стал бы музыкантом, как мечтал.
Хотелось бы все таки по существу услышать чем вот это хуже обычных миграций?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба


Смотрю и диву даюсь. Миллионы людей делают как им всем удобно, принято уже как стандарт, выстрадано годами и тоннами практик, но нет, найдется один кто будет нонконформист, революционер...
 

StalkerClasses

Новичок


Смотрю и диву даюсь. Миллионы людей делают как им всем удобно, принято уже как стандарт, выстрадано годами и тоннами практик, но нет, найдется один кто будет нонконформист, революционер...
Миграции мне единственное что не понравилось в ларавель. Не понимаю зачем откатывать миграции?на продакшине же никто не откатываем.
 

AmdY

Пью пиво
Команда форума
Вот ты же сам пишешь, что у тебя проблемы начали вылазить с автомиграциями, но продолжаешь есть кактус.
 

StalkerClasses

Новичок
Вот ты же сам пишешь, что у тебя проблемы начали вылазить с автомиграциями, но продолжаешь есть кактус.
У меня нет проблем с автомиграциями. Я говорю что у меня есть проблема создать внешний ключ. Она такая же проблема была и в обычных миграциях, внешние ключи не создаются. Единственное что не знаю как сделать это как делать переименование таблицы. Все остальное прекрасно меняется, добавляемая и удаляется. Вы попробовали это расширение?
 

StalkerClasses

Новичок
Почему вот это неработает?

ALTER TABLE technologies ADD CONSTRAINT technology_user_fk FOREIGN KEY (user_id) REFERENCES users (id)
 

StalkerClasses

Новичок
Что такого есть в этой команде что она не позволяет выполнить вот эту часть запроса CONSTRAINT technology_user_fk
 
Сверху