Laravel 5.8 find with column name other than "id", how to do?

Asked

Viewed 337 times

-1

Good Morning

In my controller to make the Show view work I have following code

public function show($id){
$produto = Produtos::find($id);
return view('produtos.produtosShow', array('produto' => $produto));}

When I type in the public/products/1 url, it is working correctly.

But I want to change the search for id by another field such as product code.

My table Products has following fields, id, code, description.

I want to be able to type in the *public/ products url/*codeDoProduct and view the product according to the code entered.

Thank you.

2 answers

2


You should then use the method where.

If the code column has unique values instead of $produto = Produtos::find($id) use $produto = Produtos::where('codigo', $codigo)->first()

You’ll have to change in your view instead of passing the id pass the code as argument.

Change in function show the parameter to $codigo.

public function show($codigo)
{
    $produto = Produtos::where('codigo', $codigo)->first();
    return view('produtos.produtosShow', array('produto' => $produto));
}
  • Thank you for your help and explanation

1

The find method of Eloquent searches for the primary key. If you want to search for another column, use the ->Where method()

public function show($cod)
{
    $produto = Produtos::where('codigo', $cod)->first();
    return view('produtos.produtosShow', ['produto' => $produto]);
}
  • Thanks for the help

Browser other questions tagged

You are not signed in. Login or sign up in order to post.