2017-02-15 1 views
1

Ich habe die Tabelle item, die jeder Benutzer hinzufügen und löschen kann so viele wie sie wollen, aber ich möchte, dass es immer mindestens einen Eintrag in item.Prüfen, ob es nur einen Datenbankeintrag in Laravel gibt

Es gibt diesen schmutzigen Weg, aber es gibt sicher bessere Wege.

Meine Lösung:

$items = item::all(); 

foreach($items as item) 
{ 
    $a++; 
} 

if ($a > 1) { 
    delete_item(); 
    return back(); 
} else { 
    return back(); 
} 

Es muss ein sauberer Weg, dies zu tun.

Antwort

4

Sie könnten use the count() method from QueryBuilder/Eloquent. Sie gibt die Anzahl der Elemente in der Tabelle:

$totalOfItems = Items::count(); 

if ($totalOfItems > 1) { 
    delete_item(); 
} 

return back(); 

diese Weise, wenn die Summe der Einzelteile in der Tabelle größer als 1 Ihr delete_item() Betrieb seine Arbeit tut, ist, sonst wird es einfach wieder zurück.

Hoffe, dass dies Ihnen hilft.

+0

Um OP-Anforderung strikt einzuhalten, sollte es> 1 sein, da die aktuelle Lösung verhindert, dass Benutzer den ersten bis letzten Eintrag löschen. – milo526

+0

'aber ich möchte, dass es immer * mindestens einen Eintrag in Element *' gibt, was er wollte, also denke ich, die Antwort ist richtig. Selbst sein eigenes Codebeispiel, das für ihn arbeitet - obwohl es schmutzig ist - verwendet '> 1' –

+0

Sein Code verwendet eine for-Schleife, die bei 0 zu zählen beginnt, die count-Funktion gibt die Anzahl der Elemente zurück, so dass seine Implementierung tatsächlich ' > 1 ', wird sich jedoch so verhalten, als ob die Zählung '> 1' aufgrund dieser 0 Indexierung wäre. – milo526

0

Wenn dies das Standardverhalten sein soll, können Sie den Ereignis-Listener unter deletingEreignis hinzufügen und count() verwenden. Überprüfen Sie die documentation für spezifische Details auf welche Laravel-Version

Verwandte Themen