Разделите данные MySQL на четыре одинаковых последовательности строк начальной загрузки по алфавиту - PullRequest
0 голосов
/ 04 мая 2019

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

Сначала я подсчитываю количество данных и делю на 4, затем выполняю 4 запроса, чтобы найти первые 25 данных, а во втором запросе следующие 25 данных и т. Д., Но ищу лучшее решение.

$catCount = Category::all()->count();

$inOneRow = intval( $catCount / 4);

Что я хочу

enter image description here

1 Ответ

1 голос
/ 04 мая 2019

Предполагая, что Категория - это таблица имен категорий - вы можете выбрать ВСЕ категории сразу и использовать в запросе ORDER BY в запросе:

$query = 'SELECT name FROM db.categories ORDER BY name ASC;';

Вы также можете использовать sort в наборе результатов:

$query = 'SELECT name FROM db.categories;';
/* execute query here... */
sort($resultSet);

Давайте предположим, что вы сделали это, стилизация будет проще с использованием сетки начальной загрузки (обратите внимание на ложный набор результатов в скриптах):

<?php
const NUM_COLS = 4;
$numResults = count($dummyResult);
$numPerCol = round($numResults / NUM_COLS);
?>
<div class="container">
    <div class="row">
        <?php
            for($i = 0, $col = 0; $col < NUM_COLS; $col++){
                echo '<div class="col">';
                for($colLimit = min($numResults, $i + $numPerCol); $i < $colLimit; $i++){
                    echo '<div class="row">'.$dummyResult[$i]['category'].'</div>';
                }
                echo '</div>';
            }
        ?>
    </div>
</div>

Вот скрипка


Легче понять, хотя, возможно, более медленный пример:

<?php
const NUM_COLS = 4;
$numResults = count($dummyResult);
$numPerCol = round($numResults / NUM_COLS);
?>
<div class="container">
    <div class="row">
        <?php
            for($i = 0; $i < NUM_COLS; $i++){
                echo '<div class="col">';
                foreach( array_splice($dummyResult, 0, $numPerCol) as $row ){
                    echo '<div class="col">'.$row['category'].'</div>';
                }
                echo '</div>';
            }
        ?>
    </div>
</div>

Вот скрипка


Примечание. Контейнер будет иметь ширину 100% от его родителя, если не указано иное. Ширина столбцов будет равна по умолчанию. См. Сетка начальной загрузки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...