【问题标题】:How to get the middle number of a query in Eloquent Laravel?如何在 Eloquent Laravel 中获取查询的中间数?
【发布时间】:2019-08-01 08:46:49
【问题描述】:

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

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

$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];

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

在这种情况下,我想获取中间的元素,即位置 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

【问题讨论】:

  • 请将此行$mensajes = Message::all()-&gt;where('asunto', 0); 替换为此$mensajes = Message::where('asunto', 0)-&gt;get(); 并检查输出。
  • 检查array_slice 函数,但可能更适合您的情况的是array_chunk。请参阅this 答案。

标签: php mysql laravel laravel-blade


【解决方案1】:

另外,你可以使用 laravel 的 helper 进行收集:

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

所以这样你会得到两个较小的集合,按元素数除以一半。

Docs.

【讨论】:

    【解决方案2】:

    试试这行代码。希望这对您有所帮助。

    $mensajes = Message::where('asunto', 0)->get();
    
    $totalComentarios = count($mensajes);
    $mitadComentarios = floor($totalComentarios/2);
    
    $primerosComentarios = $mensajes[$mitadComentarios];
    

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 2021-09-18
      • 2019-12-20
      • 2015-07-13
      • 2020-01-31
      • 1970-01-01
      • 2019-05-23
      • 2021-08-05
      相关资源
      最近更新 更多