Home > OS >  Call to undefined method App\Models\Catering::search()
Call to undefined method App\Models\Catering::search()

Time:12-10

I am trying to get searching working but i get this error: BadMethodCallException Call to undefined method App\Models\Catering::search().

CateringController

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Catering;

class CateringController extends Controller
{
    function query(Request $request)
    {
        if ($request->has('search')) {
            $search = Catering::search($request->search)->get();
        } else {
            $search = Catering::get();
        }

        return view('search.index', [
            'search' => $search
        ]);
    }
}

Catering model

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Catering extends Model
{
    use HasFactory;
    public $timestamps = false;
}

web.php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CateringController;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/search/query',[CateringController::class,'query']);

search.index

<h1>Search Catering list</h1>

<form  action="/search/query" method="GET">
  @csrf
  <input type="search" name="search" placeholder="Search...">
  <button type="submit">Submit</button>
</form>

<table border="1">
  <tr>
    <td> Id</td>
    <td> Facility name</td>
    <td> Tag</td>
    <td> Location</td>
    <td> Creation date</td>
    <td> Edit</td>
    <td> Delete</td>
  </tr>
  @foreach($devices as $device)
    <tr>
      <td> {{$device['id']}}</td>
      <td>{{$device['nameCatering']}}</td>
      <td>{{$device['tag']}}</td>
      <td>{{$device['location']}}</td>
      <td>{{$device['creation_date']}}</td>
      <td><a href={{"edit/".$device['id']}}>Click to edit</a></td>
      <td><a href={{"delete/".$device['id']}}>Click to delete</a></td>
    </tr>
  @endforeach
</table>
<br>
<br>
<a href="addCatering"><button>Make new Catering Facility</button></a>

Thanks for your time and answer.

CodePudding user response:

Use orWhere methond of laravel models

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Catering;

class CateringController extends Controller
{
    function query(Request $request)
    {
        if ($request->has('search')) {
            $search = Catering::where('name', 'LIKE', "%{$request->search}%")
                ->orWhere('updated_at', 'LIKE', "%{$request->search}%")
                ->orWhere('location', 'LIKE', "%{$request->search}%")
                ->orWhere('tag', 'LIKE', "%{$request->search}%")
                ->get();
        } else {
            $search = Catering::get();
        }

        return view('search.index', [
            'search' => $search
        ]);
    }
}
  • Related