【问题标题】:How to get one single value from an SQL request in Laravel?如何从 Laravel 中的 SQL 请求中获取一个值?
【发布时间】:2019-10-09 09:36:52
【问题描述】:

我正在尝试显示其类别与我通过单击特定类别获得的 $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 行

非常感谢!

【问题讨论】:

  • 您是按名称还是按 ID 保存产品类别?

标签: php sql laravel


【解决方案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);

【讨论】:

  • 非常感谢,确实是分页的原因!
【解决方案2】:

你可以用这个:

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

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

【讨论】:

    【解决方案3】:

    试试这个。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 2018-04-15
      • 2018-06-05
      • 2020-03-14
      • 2017-09-14
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多