0
votes

I'm implementing an API for front end and mobile apps now i'm working on search function where a user may type column phone number or any data i should be able to provide the data they request in a JSON format

i really don't know how to query based on the data they input, so for i did this

My Controller,

public function searchMember(Request $request)
{
    $data = $request->get('data');
    $member_info = Member::where('phone_number', 'like', "%{$data}%")
             ->get();

    return Response()->json([
        'status' => 'success',
        'data' => $member_info
    ], 200);
}

My Model,

class Member extends Model
{
    protected $fillable = ['name','member_id','service_id','batch_id','phone_number','office_name','designation','email','image','remember_token'];
}

And my routes

Route::get('search?data=phone_number', 'MemberController@searchMember');

When I run the API resource its return 404 | not found. I can not find the solution how to solve this. In postman I run the API something like that:

http://localhost:8000/api/v1/search?data=0179826****
1
anyway, I solve this issue.Actually I made the mistake in route.Rashed Jhony
If you have solved the issue, it is better to post the solution, it may help others.Prafulla Kumar Sahu
also remove the {} in to '%'.$data.'%' also if you want it faster remove the first % to use the index on the columnAhmed Aboud
I am sending variable through request. I I don't need to clarify it in route. So, my route look like something: Route::get('search', 'MemberController@searchMember'); Thanks @Prafulla Kumar SahuRashed Jhony

1 Answers

1
votes

I know you solved your problem but just in case some one wants to know the answer. the correct way to pass data in url in rout is:

Route::get('search/{phone_number}', 'MemberController@searchMember');

and in your controller get it like:

public function searchMember(Request $request, $phone_number)

then your url would look like:

http://localhost:8000/api/v1/search/0179826****

other than that if you are going to send variable through request you don't need to clarify it in rout. so the route would be like:

Route::get('search', 'MemberController@searchMember');

the controller and the url would be as you posted.