2016-11-14 8 views
1

Хотите обновить данные, используя laravel. Я делаю функцию внутри модели и использую этот метод внутри контроллера, но при вызове метода его вставка данных с новой функцией id.function следующим образом.Laravel save() - вставить данные вместо обновления

public function edit_client($req,$id) { 
    $client = new client(); 
    $client->find($id); 
    $client->name = $req->name; 
    $client->address = $req->address; 
    $client->email = $req->email; 
    $client->phone = $req->phone; 
    $client->gender = $req->gender; 
    $client->department = $req->department; 
    $client->update();} 
+0

Да, из-за '$ клиента = новый клиент();' .. удалить или закомментировать эту строку и повторите попытку. –

+0

Вставка новой записи. –

+1

Да 'save()' будет вставлять новую запись. – Michel

ответ

2

попробовать этот пример:

$obj= Client::where('id', $id)->update([ 
     'name' = $req->name, 
     'address' = $req->address, 
     'email' = $req->email, 
     'phone' = $req->phone, 
     'gender' = $req->gender, 
     'department' = $req->department 
    ]); 
+1

Серьезно? Вы проверили мой ответ как лучший ответ, через день один из ваших друзей скопировал мой код без каких-либо изменений, и вы забрали его и проверили его ответ. Хорошее поведение. –

3

Вы можете сделать это вместо того, чтобы:

public function edit_client($req,$id) { 
    $client = Client::find($id); 
    $client->name = $req->name; 
    $client->address = $req->address; 
    $client->email = $req->email; 
    $client->phone = $req->phone; 
    $client->gender = $req->gender; 
    $client->department = $req->department; 
    $client->save(); 
} 

Или использовать update() метод:

public function edit_client($req,$id) { 
    $client = Client::where('id', $id)->update([ 
     'name' = $req->name, 
     'address' = $req->address, 
     'email' = $req->email, 
     'phone' = $req->phone, 
     'gender' = $req->gender, 
     'department' = $req->department 
    ]); 
} 

Если вы решите использовать update() метод, не забудьте добавить $fillable массив.

+0

Спасибо за его работу. один вопрос ? функция находится в одной модели, поэтому я могу использовать $ this вместо $ client. –

+1

Если вы решите использовать этот код в модели, то да, вы должны использовать его следующим образом: 'return $ this-> где ('id', $ id) -> update (....);' –

+0

могу ли я использовать $ this-> save(); я имею в виду без создания экземпляра. –

Смежные вопросы