Приложение CRUD в API с использованием Почтальона - PullRequest
0 голосов
/ 11 декабря 2019

Итак, у меня есть сырое приложение для cliets. Я сделал это с Laravel, и теперь я хочу сделать Crud в ApiController и заставить его работать только с Почтальоном .

Когда я использую POST, ошибка: Creating default object from empty value (в $ client-> clt_name)

Когда я использую GET, он просто говорит об ошибке проверки в message

Это API

public function clients(Request $request){

    $validator = Validator::make($request->all(), [
        'name'          =>  'regex:/^[^{}<>]+$/u|max:255|required',
        'adress'         => 'regex:/[A-Za-z0-9\-\\,.]+/'
    ]);

    if($validator->fails()){
        $message = "Please fill in the right information";
        return $this->sendError('Validation Error.' . $message);        
    }

    $client_id = $request->clt_id;

    $client->clt_name = $request->name; 
    $client->clt_adres = $request->adress;
    $client->save();


    $client = client::where('clt_id', $client_id)->first();
    if($client){
        if(!is_null($client)){
            return $this->sendError("404", 'client not found');
        }
    }
    else{
        //new client
        $client = new client; 
    }         
}

И функция удаления:

public function delete_client(Request $request){
        $client = client::find($id);
        $client->delete();    
    }

Я довольно новичок в создании API, поэтому любая помощь будет высоко ценится.

Ответы [ 3 ]

2 голосов
/ 11 декабря 2019

Надеюсь, это то, что вы ищете

public function clients(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name'          =>  'regex:/^[^{}<>]+$/u|max:255|required',
        'adress'         => 'regex:/[A-Za-z0-9\-\\,.]+/'
    ]);

    if($validator->fails()){
        $message = "Please fill in the right information";
        return $this->sendError('Validation Error.' . $message);        
    }

    $client_id = $request->clt_id;
    $clt_name = $request->name; 
    $clt_adres = $request->adress;

    return client::updateOrCreate(
        ['clt_id' => $client_id],
        ['clt_name' => $clt_name, 'clt_adres' => $clt_adres]
    );     
}

Это создаст нового клиента, если clt_id не существует, иначе он обновит клиента.

0 голосов
/ 11 декабря 2019

Проверьте это:

public function clients(Request $request){

  $validator = Validator::make($request->all(), [
    'name'          =>  'regex:/^[^{}<>]+$/u|max:255|required',
    'adress'         => 'regex:/[A-Za-z0-9\-\\,.]+/'
  ]);

  if($validator->fails()){
    $message = "Please fill in the right information";
    return $this->sendError('Validation Error.' . $message);        
  }

  $client = client::where('clt_id', $request->clt_id)->first();

  if($client !== null){
    // update client - all fields must be fillable in client model
    $client = $client->update($request->except('clt_id'));
  } else{
    //new client - all fields must be fillable in client model
    $client = Client::create($request->all());
  }

  return response()->json($client);
}
0 голосов
/ 11 декабря 2019

Попробуйте следующим образом

создать объект и присвоить значения

 $client= new Client;  //your table name
 $client->clt_name = $request->name; 
 $client->clt_adres = $request->adress;
 $client->save();
...