Laravel 5.7 моя модель из моего параметра return пуста, когда я ее выкидываю - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь показать каждый товар в той же категории.Если я выбрасываю свою модель (кошку), она показывает мне следующее:

cat {#400 ▼
  #guarded: []
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
}

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

<?php

namespace App\Http\Controllers;

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

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

    }

    public function shopindex()
    {
        //Producten onlangs toegevoegd
        $productsOTs = DB::table('productimages')->where('Afkorting', 'PPI')->orWhere('Productcode', '[0-9]+')->limit(3)->offset(83)->get();
            //$productsOTs = DB::select(DB::raw("SELECT * FROM wiz.productimages WHERE Afkorting = 'PPI' LIMIT 83, 3"));

        //Producten categorieën combobox  
        $productcats = DB::table('products')->distinct()->select('Productserie', 'Productserie')->get();
            //$productcats = DB::select(DB::raw("SELECT DISTINCT Productserie FROM wiz.products"));

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

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

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


        // Products from category
        $categorieProds = DB::table('products')->where(function ($query) use ($cat) {
                            $query->where('Productserie', '=', $cat);
                            })->get();

        dd($cat);

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

Мой web.php:

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

Мой foreach из / shop:

        <select class="form-control category" onchange="window.location=this.options[this.selectedIndex].value">
            <option value="" disabled selected hidden>Categorieën</option>
            @foreach ($productcats as $productcat)
                <option value="/shop/products/{{ $productcat->Productserie }}">{{ $productcat->Productserie }}</option>
            @endforeach
        </select> 

Моя модель (cat.php)почти пусто, я подумал, может быть, в этом проблема.Единственный код в моей модели: protected $guarded = [];

1 Ответ

0 голосов
/ 13 декабря 2018
$productcat->Productserie

Какой тип продукции?Это первичный ключ или название категории (текст)?

Также можете ли вы подтвердить правильность написания?Для меня это должен быть Productseries.Но, возможно, в вашей базе данных есть ошибка опечатки, в противном случае laravel должен выдать исключение из неизвестного столбца.

function shopCat(Cat $cat) 

Я предполагаю, что вы публикуете название категории в URL.Если это так, то Laravel может быть не в состоянии преобразовать имя категории в связанную модель Cat в качестве параметра для вашего метода.Вместо этого этому методу может передаваться ноль в $ cat

Попробуйте отладить dd ($ cat) и посмотреть, что вы получите в $ cat.

если $ cat равен нулю, то ваше следующее условие where станет ложным.так что он вернет ноль.

$query->where('Productserie', '=', $cat);

Решение

, если dd показывает, что $ cat является моделью Cat.затем измените условие where на следующее:

$query->where('Productserie', '=', $cat->Productserie);

, но если dd показывает $ cat в виде строки, измените сигнатуру вашего метода примерно так:

public function shopCat(String $cat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...