Результат будет отображаться два раза в блейд-файле в laravel 5.7 - PullRequest
0 голосов
/ 15 марта 2020

Я создаю задачу, в которой я хочу отобразить уведомление на основе уведомлений_стата и порядка заказов. Из контроллера получается только три записи, но в блейд-файле повтор l oop, две записи два раза. Как и ожидалось, я хочу отобразить только первые три записи, но они повторяют вторую и третью записи. Как можно устранить эту путаницу?

контроллер:

public function get_notification()
    {
        $userId=Session::get('userid');
       $data = DB::select('Select orders.product_id,subcategory.image,GROUP_CONCAT(subcategory.name_of_subcategory) as subcategory,orders.grand_total,orders.deliver_date,orders.order_status,orders.notification_status,orders.orders_id,orders.payment_status,orders.orders_date from orders inner join product_details on FIND_IN_SET(product_details.product_id,orders.product_id) > 0 inner join subcategory on product_details.sub_id=subcategory.sub_id where orders.user_id=? GROUP BY orders.product_id,orders.deliver_date,orders.order_status,orders.orders_id,orders.notification_status,orders.orders_date,orders.payment_status,orders.orders_subtotal,subcategory.image,orders.grand_total',[$userId]);
        return view('notification')->with('data',$data);
    }

лезвие:

@foreach($data as $notification)


                    <div class="card-body noti-card" id="noti-card">
                        <div class="row mt-2">


                            <div class="col-sm-2">
                                <div>

                                    <span><img src="{{asset('images/subcategory/'.$notification->image)}}" class="img-fluid" height="100" width="100"></span><br>
                                </div>
                            </div>

                            <div class="col-sm-8">
                                <div>
                                    <span>
                                        <?php
                                            if($notification->notification_status == 1 && $notification->order_status ==1){
                                                echo "<b>Order Placed</b><br>";
                                                echo "Your order for ".$notification->subcategory." with order ID ODI".$notification->orders_id." amounting to Rs.".$notification->grand_total." has been received.";
                                            }
                                            if($notification->notification_status == 2 && $notification->order_status == 2)
                                            {
                                                echo "<b>Order Cancelled</b><br>";
                                                echo "Your order for".$notification->subcategory." with order ID ODI".$notification->orders_id." is successfully cancelled.";
                                            }
                                            if($notification->notification_status == 3 && $notification->order_status == 3)
                                            {
                                                echo "<b>Product Packed</b><br>";
                                                echo "Your package containing ".$notification->subcategory." has been packed by seller and will be shipped soon.";
                                            }
                                            if($notification->notification_status == 4 && $notification->order_status == 4)
                                            {
                                                echo "<b>Product Shipped</b><br>";
                                                echo "Your package containing ".$notification->subcategory." has been shipped by seller and will be delivered soon.";
                                            }
                                            if($notification->notification_status == 5 && $notification->order_status == 5){
                                                echo "<b>Out for Delivery</b><br>";
                                                echo "Your package containing ".$notification->subcategory." from Aarch Ayurved will be delivered today";
                                            }
                                            if($notification->notification_status == 6 && $notification->order_status == 6){
                                                echo "<b>Product Delivered</b><br>";
                                                echo "Your package containing ".$notification->subcategory." has been delivered. Thanks for shopping!";
                                            }

                                        ?>
                                    </span>

                                </div>
                                <div>
                                    <span class="noti-date"><?php
                                    $timestamp = strtotime("$notification->orders_date");
                                    $formattedDate = date('F d, Y', $timestamp);
                                    echo $formattedDate;
                                    ?></span>
                                </div>
                            </div>
                        </div>
                    </div>
                    @endforeach
                </div>
            </div>
        </div>
    </div>

    @endsection

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
    <script type="text/javascript">
        function loadlink(){
            $('#noti-card').load('/notification #noti-card');
            console.log('TESTING!!!!');
        }
        loadlink();
        setInterval(function(){
            loadlink()
        }, 1000);

    </script>

выход:

enter image description here

1 Ответ

0 голосов
/ 15 марта 2020

Дублирование, скорее всего, происходит из запроса. Можете ли вы использовать Laravel вспомогательные методы dump() или dd() результаты сразу после запуска запроса для подтверждения? например, dd($data) сразу после запроса позволит вам увидеть результаты, которые возвращает запрос, и проверить, соответствуют ли они ожиданиям или нет.

Я полагаю, что проблема может заключаться в присоединении к product_details. Каково намерение использовать FIND_IN_SET()?

Запрос будет намного легче читать и понимать, если он разбит на несколько строк. Возможно, будет проще устранить неполадки, если вы переключитесь на построитель запросов, который будет выглядеть примерно так:

$data = DB::table('orders')
    ->select([
        'orders.deliver_date',
        'orders.grand_total',
        'orders.notification_status',
        'orders.order_status',
        'orders.orders_date',
        'orders.orders_date',
        'orders.orders_id',
        'orders.payment_status',
        'orders.product_id',
        'subcategory.image',
        DB::raw('GROUP_CONCAT(subcategory.name_of_subcategory) as subcategory'),
    ])
    ->join('product_details', 'orders.product_id', '=', 'product_details.product_id')
    ->join('subcategory', 'product_details.sub_id', '=', 'subcategory.sub_id')
    ->where('orders.user_id', '=', $userId)
    ->groupBy(
        'orders.product_id',
        'orders.deliver_date',
        'orders.order_status',
        'orders.orders_id',
        'orders.notification_status',
        'orders.orders_date',
        'orders.payment_status',
        'orders.orders_subtotal',
        'subcategory.image',
        'orders.grand_total'
    )
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...