• Для чего inversedBy и mappedBy в Doctrine и в чём разница?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для объявления двусторонних связей между сущностями. Справедливости ради - в 99% случаев двусторонние связи не нужны и их лучше по возможности избегать. Как минимум потому что они не нужны и позволяют делать страшные вещи, ну и на производительность сказывается это пагубно.
    Ответ написан
  • Как для телеграм бота обработать "реферальную ссылку"?

    Когда человек переходит по ссылке t.me/YourBot?start=user_id и нажимает Start, боту отправляется сообщение /start user_id. Чтобы реферальная ссылка была короче, ID пользователя можно, например, конвертировать из десятичной системы в 36-ичную.
    <?php
    
    // Получаем user_id из ID реферала
    function parseRefLink($ref_link) {
    	$ref_link = strtolower($ref_link);
    
    	if (!preg_match('/^r_([0-9a-z]+)$/', $ref_link)) {
    		return false;
    	}
    
    	$ref_link = substr($ref_link, 2);
    	return intval(base_convert($ref_link, 36, 10));
    }
    
    // Получаем ID реферала из user_id
    function getRefLink($tg_user_id) {
    	return 'r_'.base_convert($tg_user_id, 10, 36);
    }
    Ответ написан
  • Как в Yii2 вставлять базовые данные в базу?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.

    Есть идея создать контроллер и компонент в консольном приложении.


    Так за чем остановка? Делайте.
    Но миграцию всё равно создайте, миграция может только создавать или удалять таблицу/поле таблицы, а может и сразу данные записать.
    Например так

    public function up()
        {
    
             $this->createTable('{{%country}}', [
    
                'id' => $this->primaryKey(),
                'name' => $this->string()->notNull
             ]);
    
             $this->batchInsert('{{%country}}', ['name'], [
                                                            ['Абхазия'],
                                                            ['Австрия'],
                                                            ['Андора'],
                                                            ['Аргентина'],
                                                            ['Болгария'],
                                                            ['Бразилия'],
                                                          ]
                               );
    
        }


    Можно без записи в базу данных, просто создать таблицу, а для заполнения написать консольный скрипт, через который можно будет вносить новые данные в базу обходясь без crud.

    По этой ссылке Вы сможете, на примере создания аккаунта пользователя, познакомиться с консольным управлением (в конце статьи).
    Ответ написан