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