如何在Laravel中从SQL请求中获取一个值?

时间:2019-05-22 20:31:52

标签: php sql laravel

我试图通过单击特定类别来显示其类别与我获得的$ id匹配的所有产品。

我尝试使用-> first()和-> pluck('name')函数

我尝试在CategoriesController中执行此操作:

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 \ resources \ views \ categories \ show.blade.php)   (该页面显示该类别的所有产品)

     

BadMethodCallException方法链接不存在。在Macroable.php中   第74行

非常感谢!

3 个答案:

答案 0 :(得分:1)

首先,对于类别,您可能正在使用路由模型绑定,因此:

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);

答案 1 :(得分:1)

您可以使用此:

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

->first()从数据库中提取第一项作为您的实体,然后您可以使用实体的name属性访问名称。

答案 2 :(得分:0)

尝试一下。

true