А правильно ли сформировано запрос, возможно записи 8,7,6,5 не подпадают под условие в where. Или, может, не так указан лимит на выборку, например limit 0, 4.
Ну или вот так, что бы через запятую
mysql -B -uroot -p1111 -e 'SELECT * FROM books' test | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > test.csv
Нет, так как при distinct mysql отдаст в выборку только уникальные записи, колонку тут указывать не нужно. Можно сделать например вот так: (new \yii\db\Query())->select(['myint'])->distinct()->from('table')->column();
Если делать с помощью AR, то результатом будет коллекция моделей, а при обработке можно обращаться к полю с помощью $model->myint, или если нужно вытащить только 1 колонку, то можно использовать метод column у QueryBuilder'a
Ну тогда можно сделать следующим образов: есть таблица полей, есть таблица значений полей. Таблица значений полей связана по внешнему ключу с таблицей, в которой у вас БЫЛИ сериализованные данные. При добавлении в бд нового массива, вставляются ранее не известные ключи в таблицу полей и значений по этим ключам в таблицу значений. Выборку желательно реализовать по WHERE KEY IN (...), что бы избежать джоинов.
Ну если нет необходимости поиска по этим данным, то почему бы и нет. Только все же не плохо учесть размер сериализованных данный, как вариант можно использовать BLOB, если они не хранятся в строке, а в бинарном виде.
В первом случае не должно сработать, так как это не вызывает событие, а добавляет еще 1 обработчик.
Во втором случае должно сработать.
Какова цель вызова этого события на элементе?
В ответе от них рекомендуется отказаться и причины этого там объясняются. Если кратко, то на каждый уровень вложенности каждой категории будет выполняться 1 select и открываться 1 курсор, то очень не оптимально в плане потребления ресурсов и производительности. Можно написать отдельную функцию которая будет принимать курсор и вставлять данные в таблицу.