2017-08-13 5 views
1

Dokumentation arbeitet, sagt:Laravel Eloquent löschen() nicht

$user = User::find($user_id); 

$user->delete(); 

Dies funktioniert nicht, aber ProductColor :: find ($ color_id) arbeiten. $ color-> delete() Doest gibt alles zurück, DELETE FROM-Abfrage wird nicht einmal ausgeführt (wie in der Debug-Leiste zu sehen ist).

Aber ich kann Datensatz löschen mit:

ProductColor::destroy($color_id); 

etwas sein Muss ich früher übersehen, ich bin neu in Laravel.

Ich verwende Speicher auch, und es arbeitet als

erwartet
public function store(Request $request) 
    { 
     $color = new ProductColor(); 
     $color->name = $request->color_name; 
     $color->order = $request->color_order; 
     $saved = $color->save(); 

     if ($saved) { 
      return back()->with('message:success', 'Ok'); 
     } else { 
      return back()->with('message:error', 'Error'); 
     } 

    } 

Um

Das funktioniert

public function destroy($color_id) 
    { 
     $deleted = ProductColor::destroy($color_id); 

     if ($deleted) { 
      return back()->with('message:success', 'Deleted'); 
     } else { 
      return back()->with('message:error', 'Error'); 
     } 
    } 

Dieses NICHT

public function destroy($color_id) 
{ 
    $color = ProductColor::find($color_id); 

    $color->delete(); 
} 

Mein Modell zusammenzufassen

<?php 

namespace Modules\Shop\Entities; 

use Illuminate\Database\Eloquent\Model; 
use Modules\Languages\Entities\Language; 

class ProductColor extends Model 
{ 
    protected $fillable = []; 
    protected $table = 'product_colors'; 
} 
+0

Wirklich I don Ich weiß nicht, warum das nicht funktioniert. Aber warum versuchst du es nicht mit Abfrage ?? '$ user = Benutzer :: wo ('user_id', $ user_id) -> delete();' –

+0

Meine IDE zeigt, dass 'where' keine statische Methode ist, also habe ich einfach User :: destroy ($ user_id); – RomkaLTU

+0

Was ist der Fehler, wenn Sie versuchen, 'delete()' zu verwenden? – lesssugar

Antwort

0

Sorry Ich habe herausgefunden, wo das Problem ist. Mein Fehler, Frage zu stellen.

Was ich zu tun versucht:

$color = new ProductColor(); 
$color->find($color_id); 
$color->delete(); 

werden sollten:

$color = ProductColor::find($color_id); 
$color->delete(); 

Mein Problem war taht ich Angst IDE beschweren über die Verwendung von nicht-statische Methode 'find'

0

Ihr Code ist in Ordnung - the docs show exactly was Sie tun. Wenn kein Fehler vorhanden ist und die Farbe nicht wie erwartet gelöscht wird, wird $color_id nicht wie erwartet übergeben. Verwenden Sie findOrFail, oder fügen Sie eine andere Überprüfung hinzu, dass Sie das erwartete Modell gefunden haben.