Ответы пользователя по тегу MySQL
  • Как получить JSON тип поля с БД в Yii2?

    @LAV45
    Ответ написан
    Комментировать
  • Как снизить нагрузку на БД при большом количестве запросов?

    @LAV45
    1) Переезжайте на PostgreSql
    2) Используйте batch insert, у меня по 100 000 записей пишет и не запиниется
    3) Удаляйте B-Tree индекс он при каждой вставке производит переиндексацию всего дерева, в PostgreSql с этим немного лудше там переиндексация выполняется отложенно.
    У Mysql тормаза начинаются при 2.000.000 записей в таблице у PostgreSql после 5.000.000.
    4) Если перейдете на PostgreSql можно поднять вторую базу в режме master-slave
    В master писать, со slave читать. И синхронизировать из в асинхронном режиме. Таким образом slave будет немного отставать от master (примерно на 2 сек в зависимости от нагрузки) но slave будет просто летать.

    #PostgreSQLRussia митап в компании Avito.ru
    https://www.youtube.com/watch?v=2LDAcGZRAEM
    Ответ написан
    Комментировать
  • Как строить RESTful API для работы с данными в связанных таблицах?

    @LAV45
    Например контент с несколькими языками.

    Можешь использовать этот Behavior https://github.com/LAV45/yii2-translated-behavior
    Ты проста работаешь с основной моделью Post и не задумываться в какую таблицу что писать.
    Ответ написан
    Комментировать
  • Как написать вложенный под запрос (php yii)?

    @LAV45
    При проектировании БД вам нужна учитывать все слабые и сильные стороны ActivRecord в Yii если вы отказываетесь от него и планируете самостоятельно формировать запросы используя тогда вам и карты в руки. Кроме вас самых вам на вряд ли кто-то сможет помочь.
    Ответ написан
    Комментировать
  • Yii2 цикл Join'ов, как?

    @LAV45
    Если я вас правильно понимаю тогда ваш запрос будет выглядеть как-то так:
    $data = Product::find()
    	->joinWith('table')
    	->where(['table.value_id' => [1, 2, 3]])
    	->asArray()
    	->all();

    Сам не понимаю почему такие sql сгенерировало :(
    SELECT `product`.* FROM `product` LEFT JOIN `table` ON `product`.`id` = `table`.`product_id` WHERE `table`.`value_id` IN (1, 2, 3);
    SELECT * FROM `table` WHERE `product_id` IN ('1', '2');


    Но я бы сделал вот так:
    $data = Product::find()
    	->with([
    		'table' => function(Query $q) {
    			$q->where(['value_id' => [1, 2, 3]]);
    		}
    	])
    	->asArray()
    	->all();

    SELECT * FROM `product`;
    SELECT * FROM `table` WHERE (`value_id` IN (1, 2, 3)) AND (`product_id` IN ('1', '2'));

    // print_r($data);
    Array
    (
        [0] => Array
            (
                [id] => 1
                [manufacturer_id] => 2
                [category_id] => 13
                [status] => 10
                [name] => фотокамера Canon SX 150 IS black
                [created_at] => 1395167522
                [updated_at] => 1395167679
                [table] => Array
                    (
                        [product_id] => 1
                        [value_id] => 1
                    )
            )
    
        [1] => Array
            (
                [id] => 2
                [manufacturer_id] => 2
                [category_id] => 29
                [status] => 10
                [name] => сумка
                [created_at] => 1395170865
                [updated_at] => 1395170865
                [medium_delivery] => 0
                [table] => Array
                    (
                        [product_id] => 2
                        [value_id] => 1
                    )
            )
    )
    Ответ написан
    Комментировать
  • Как перенести статьи с MODX на Yii2?

    @LAV45
    MaxKorz, это только в том случае если в самом MODx проставлены foreign key для mysql, но я ещё не встречал ни одного такого движка.

    Вам не нужно создавать БД похожую как у MODx вы можете взять её как есть и создать модели через gii. Если в БД будут прописаны foreign key тогда gii сам пропишет все связи между моделями иначе придется в ручную настраивать все связи.
    Ответ написан
    Комментировать