Как получить одно значение из запроса SQL в Laravel? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь отобразить все продукты, категория которых соответствует $ id, который я получаю, нажав на конкретную категорию.

Я пытался использовать функции -> first () и -> pluck ('name')

Я пытался сделать это в контроллере категорий:

public function show($id)
    {
        $category = Category::where('id', $id)->pluck('name');
        $products = Product::where('categorie', $category)->get();
        return view('categories.show')->with('products',$products);
    }

ErrorException Метод ссылки не существует. (Посмотреть: C: \ wamp64 \ WWW \ gestionPointDeVente \ ресурсы \ вид \ Категории \ show.blade.php) (на этой странице отображаются все товары этой категории)

BadMethodCallException Метод ссылки не существует. в Macroable.php строка 74

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 22 мая 2019

Вы можете использовать это:

$category = Category::where('id', $id)->first()->name;

->first() извлекает первый элемент из базы данных как вашу сущность, затем вы можете использовать свойство name сущности для доступа к имени.

1 голос
/ 22 мая 2019

Прежде всего для категории вы могли использовать привязку модели маршрута, так что:

public function show($id)

Может стать следующим:

public function show(Category $category)
{
    // if you decide to keep the id you can uncomment the next line
    // $category = Category::find($id);

    // the product has the category name or id? 
    $products = Product::where('categorie', $category->name)->get();
    return view('categories.show')->with('products',$products);
}

Тогда ошибка говорит о том, что вы пропустили links метод, который существует, если вы используете нумерацию страниц, но в своем коде его нет.

Таким образом, эта строка:

$products = Product::where('categorie', $category->name)->get();

должна стать такой:

$products = Product::where('categorie', $category->name)->paginate(10);
0 голосов
/ 22 мая 2019

Попробуйте это.

public function show($id)
{
    $categoryName = Category::where('id', $id)->value('name');
    $products = Product::where('categorie', categoryName)->paginate();
    return view('categories.show')->with('products',$products);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...