如何在口才的Laravel中获取查询的中间数?

时间:2019-03-11 03:59:08

标签: php mysql laravel laravel-blade

我想获取Laravel中咨询中间号码的ID。

示例:我在laravel中进行查询,它给了我10个元素,但是我想知道wich是中间的元素。

$usuario = Auth::user();

    $mensajes = Message::all()->where('asunto', 0);
    $totalResenas = Message::all();

    $totalComentarios = count($mensajes);
    $mitadComentarios = round($totalComentarios/2);
    $mitadComentarios = trim($mitadComentarios);


    $primerosComentarios = $mensajes[$mitadComentarios];

问题在于,最后一个的结果给了我元素总数的位置,而不是查询元素的位置。

The result of the query

在这种情况下,我想获取中间的元素,即位置5,其ID为7。

视图:

<!--Primera fila de las reseñas-->
            @foreach($mensajes as $mensaje)
                <!--Si es reseña aqui se mostrará-->
                @if($mensaje->asunto = true)

                        @if($mensaje->id <= $primerosComentarios)
                            <p>{{ $mensaje->id }}</p>
                            <div class="service mb-0">
                                <div class="service__icon"><i class="pe-7s-user"></i></div>

                                <!--Calificacion en estrellitas-->

                                <!--Sacamos el valor de la calificacion-->
                            @php
                                $calificacion = $mensaje->calificacion;
                            @endphp
                            <!--END Sacamos el valor de la calificacion-->

                                <!--Imprimimos las estrellitas-->
                                @for($i = 1; $i <= $calificacion; $i++)
                                    <label class="" style="color: orange" for="radio1">★</label>
                            @endfor
                            <!--END Imprimimos las estrellitas-->

                                <!--END Calificacion en estrellitas-->

                                <h3 style="color:lightseagreen;" class="service__title">{{ $mensaje->name }}</h3>
                                <p class="service__text">{{ $mensaje->mensaje }}</p>
                            </div>
                        @endif

                @endif
                <!--END Si es reseña aqui se mostrará-->

            @endforeach

打印查询的后半部分

@foreach($mensajes as $mensaje)
                <!--Si es reseña aqui se mostrará-->
                @if($mensaje->asunto = true)

                    @if($mensaje->id > $primerosComentarios && $mensaje->id <= count($totalResenas))
                        <div class="service mb-0">
                            <div class="service__icon"><i class="pe-7s-user"></i></div>

                            <!--Calificacion en estrellitas-->

                            <!--Sacamos el valor de la calificacion-->
                        @php
                            $calificacion = $mensaje->calificacion;
                        @endphp
                        <!--END Sacamos el valor de la calificacion-->

                            <!--Imprimimos las estrellitas-->
                            @for($i = 1; $i <= $calificacion; $i++)
                                <label class="" style="color: orange" for="radio1">★</label>
                        @endfor
                        <!--END Imprimimos las estrellitas-->

                            <!--END Calificacion en estrellitas-->
                            <h3 style="color:lightseagreen;" class="service__title">{{ $mensaje->name }}</h3>
                            <p class="service__text">{{ $mensaje->mensaje }}</p>
                        </div>
                    @endif

                @endif
                <!--END Si es reseña aqui se mostrará-->

            @endforeach

2 个答案:

答案 0 :(得分:2)

尝试以下代码行。希望对您有帮助。

$mensajes = Message::where('asunto', 0)->get();

$totalComentarios = count($mensajes);
$mitadComentarios = floor($totalComentarios/2);

$primerosComentarios = $mensajes[$mitadComentarios];

答案 1 :(得分:1)

此外,您可以使用laravel的帮助程序进行收集:

$chunks = $mensajes->chunk($mitadComentarios);

这样,您将获得两个较小的集合,并按元素计数将其分成一半。

Docs