mafortis
mafortis

Reputation: 7138

laravel dynamic scope not working

I try to get my categories base on their status and i have scope below in my category model:

public function scopeOfStatus($query, $status)
{
     return $query->where('status_id', $status);
}

And my controller is like:

public function finder() {
    $findercategories = Category::OfStatus('Active')->get();
    return response()->json($findercategories);
}

My route is like:

Route::get('/finder','frontend\SearchController@finder');

But i get blank page as result. Any idea?

update

if i use $findercategories = Category::ofStatus(1)->get(); i get the result that i want but it's static not dynamic :\

Upvotes: 0

Views: 704

Answers (1)

linktoahref
linktoahref

Reputation: 7992

Get the Id's from the statuses table with respect to the searched value and use the Id's to get the Category

public function scopeOfStatus($query, $status)
{
    $statuses = Status::where('title', $status)->pluck('id'); // Or relevant column name
    return $query->whereIn('status_id', $statuses);
}

and in your Controller you could do so

public function finder() {
    $findercategories = Category::ofStatus('Active')->get();
    return response()->json($findercategories);
}

Upvotes: 1

Related Questions