Laravel 5.7 foreach ничего не показывает, но переменная установлена - PullRequest
0 голосов
/ 11 декабря 2018

Мой foreach ничего не показывает, я не уверен, что передал переменную правильно.Выбор из моего контроллера работает, если я использую его в тинкере, он работает.Но это не покажет, на мой взгляд.Не ошибка, просто ничего.

Моя веб-страница:

   //shop
    Route::get('/shop', ['middleware' => 'auth', 'uses' => 'ProductsController@shopindex']);
    //shop categorie
    Route::get('/shop/products/{pcategorie}', ['middleware' => 'auth', 'uses' => 'ProductsController@shopCat']);
    //shop product detail
    Route::get('/shop/productdetail/{product}', 'ProductsController@productdetail');

Мой контроллер:

<?php

namespace App\Http\Controllers;

use DB;
use Illuminate\Http\Request;
use App\Product;
use App\pCategorie;

class ProductsController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function shopindex()
    {

        $productsOTs = DB::select(DB::raw("SELECT * FROM wiz.productimages WHERE Afkorting = 'PPI' LIMIT 83, 3"));
        $productcats = DB::select(DB::raw("SELECT DISTINCT Productserie FROM wiz.products"));

        return view('shop', compact('productsOTs', 'productcats'));
    }

    public function productdetail(Product $Product)
    {   
        return view('Products.productdetail', compact('productsOT'));
    }

    public function shopCat(pCategorie $pCategorie)
    {
        // Combobox items Cats
        $productcats = DB::select(DB::raw("SELECT DISTINCT Productserie FROM wiz.products"));

        // Products from category
        $categorieProds = DB::select(DB::raw("SELECT * FROM products WHERE Productserie = '$pCategorie'"));

        return view('Products.allproducts', compact('productcats', 'categorieProds'));
    }

}

И foreach с моей точки зрения:

   @if (isset($categorieProds))
      @foreach ($categorieProds as $categorieProd)
         <li>test</li>
      @endforeach

   @else
      <h1>Not found</h1>
   @endif

Я надеюсь, что кто-то может мне помочь:)

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Вы не вызываете get() в конце ваших запросов на выборку:

Необработанный SQL не нужен, лучше всего использовать правильные методы построителя запросов.

Давайте очистим эти запросы:

// instead of writing this
$productcats = DB::select(DB::raw("SELECT DISTINCT Productserie FROM wiz.products"));

// write this
$productcats = DB::table('products')->distinct()->select('Productserie')->get();


// bad
$categorieProds = DB::select(DB::raw("SELECT * FROM products WHERE Productserie = '$pCategorie'"));

// good
$categorieProds = DB::table('products')->where('Productserie', $pCategorie)->get();

Хотите узнать больше?

0 голосов
/ 11 декабря 2018

Перепишите запросы с помощью метода ->get().И похоже, что $ pCategorie является объектом, возможно, вам следует использовать его свойство, например, $ pCategorie-> id.

public function shopCat(pCategorie $pCategorie)
{
    // Combobox items Cats
    $productcats = DB::table('wiz.products')
        ->select('Productserie')
        ->distinct()
        ->get();

    // Products from category
    DB::table('products')
        ->where('Productserie', $pCategorie)
        ->get();

    return view('Products.allproducts', compact('productcats', 'categorieProds'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...