count() Parameter muss ein Array oder ein Objekt sein, das Zählbar in Laravel implementiert

Lesezeit: 4 Minuten

Benutzer-Avatar
faraz

Dies ist Code hier:

protected function credentials(Request $request)
{
    $admin=admin::where('email',$request->email)->first();
    if(count($admin))
    {
       if($admin->status==0){
           return ['email'=>'inactive','password'=>'You are not an active person, Please contact to admin'];
           }
           else{
               return ['email'=>$request->email,'password'=>$request->password,'status'=>1];
           }
       }
       return $request->only($this->username(), 'password');
    }

Wenn ich den Code ausführe, wird dieser Fehler:

“count(): Parameter muss ein Array oder ein Objekt sein, das Countable implementiert”

  • Sie rufen den ersten Datensatz ab, der mit der E-Mail übereinstimmt, es wird niemals ein Fehler zurückgegeben.

    – Kamal Paliwal

    27. Oktober 2018 um 10:16 Uhr

  • Sie können die Funktion is_countable von PHP ausprobieren. stackoverflow.com/a/54806221/3016038

    – Vipul

    21. Februar 2019 um 11:44 Uhr

  • Hier ist eine schnelle Lösung sdtuts.com/… gerade Parameter ist kein array

    – Benutzer3151197

    17. März 2019 um 9:36 Uhr

Benutzer-Avatar
Jericho Manalo

Das ist meine Lösung:

count(array($variable));

  • Seien Sie vorsichtig.. Wenn $variable bereits ein Array ist, wird es das sein [[$variable]]und die Anzahl wird 1 sein

    – Wackelige Welt

    1. Dezember 2020 um 23:16 Uhr


  • Das ist falsch, count wird immer 1 sein. Sie zählen ein Array mit einem einzelnen Wert von $variable darin, egal was $variable enthält.

    – inwerpsel

    22. April um 11:27 Uhr

Benutzer-Avatar
Dmytro Huz

Dies geschieht aufgrund der in PHP 7.2 NULL in count() zurückgegebenen Warnung. Sie können versuchen, sich zu ändern

count($admin)

zu

count((is_countable($admin)?$admin:[]))

  • FWIW: is_countable() wird in PHP7.3 eingeführt.

    – Rauben

    11. Dezember 2020 um 17:06 Uhr

Benutzer-Avatar
Teoman Tıngır

Beachten Sie, dass hier, wenn Sie die verwenden count() -Methode sollte es ein zählbares Element geben, wie ein Array oder Objekt, das implementiert ArrayAccess.

Admin::where('email',$request->email)->first();

Aber die first() -Methode geben Ihnen ein einzelnes Element, keine Sammlung oder ein Array. Das get() Methode gibt Ihnen eine zählbare Sammlung mit gefundenen Elementen zurück

Anstelle von count können Sie direkt prüfen, ob die Variable selbst definiert oder null ist

if($admin){
  // do something here
}

oder Sie können verwenden is_null() Methode

if(!is_null($admin)){
  // do something here
}

  • Ich versuche die erste Methode und verwende if ($ admin), aber es kommt ein Fehler, es geht weiter und zeigt eine leere Seite an, die nicht angezeigt wird, wenn die Meldung blockiert wird

    – faraz

    27. Oktober 2018 um 10:35 Uhr


  • und wenn ich die Methode get () und if ($ admin) verwende, kommt dieser Fehler “Property [status] ist in dieser Sammlungsinstanz nicht vorhanden.”

    – faraz

    27. Oktober 2018 um 10:38 Uhr

  • @faraz Fehler macht absolut Sinn, weil die get-Methode Ihnen eine Sammlung gibt. Und bevor Sie den Status erhalten, müssen Sie zuerst ein Element auswählen. wie $admin->{0}->status, Und ich weiß nicht, was Sie mit Anmeldeinformationen machen, also kann ich nicht wissen, warum Sie eine leere Seite erhalten. Sie können Ihren Code jederzeit mit der dd-Methode überprüfen. Fügen Sie zum Beispiel eine dd-Methode in die if-Anweisung ein und prüfen Sie, ob die if-Anweisung gut funktioniert. Oder teilen Sie uns mehr von Ihrem Code mit, um Ihnen zu helfen

    – Teoman Tıngır

    27. Oktober 2018 um 11:03 Uhr

Sie sollten prüfen, ob es null statt count ist, da Sie mit nach einem Ergebnis fragen first()
nur das

if($admin)

werde es tun.

wenn Sie eine Sammlung mit zurückgeben ->get() dann kannst du prüfen $admin->count().

$admin Variable ist weder ein Array noch ein Objekt, das Zählbar implementiert. Wenn Sie verwenden first() Das Ergebnis ist ein Modellobjekt, wenn ein Datensatz gefunden wird, andernfalls ist es null. Für diese Bedingung können Sie verwenden:

if (!empty($admin)) {
    //
}

Einfach ersetzen if (count($admin)) mit if (!empty($admin)).

Und wenn Sie verwenden get() Methode, um mehrere Datensätze zu erhalten, die Sie überprüfen können:

if ($admins->count() > 0) {
    //
}

Benutzer-Avatar
sonu pokade

Well,
$admin=Admin::where('email',$request->email)->first();
//It will always return an **object**.
And make sure you included Admin model in your controller like as.
Use App\Admin;
at the same time check that you will have to mention which field of table needs to be fillable like in your model such as 
protected $fillable = [
'first_name',
'last_name'
];

whatever data you will going to save in your database.
and then check object is null or not
I mean is.

if($admin && $admin!==null){
  //do whatver you want to do.
}

Benutzer-Avatar
Rajesh

$admin = null;
var_dump(count($admin));

Ausgang: Warnung: count(): Parameter muss ein Array oder ein Objekt sein, das Countable in … in Zeile 12 // ab PHP 7.2 implementiert

wenn der Zustand so sein sollte:

if(isset($admin) && count($admin))

1049300cookie-checkcount() Parameter muss ein Array oder ein Objekt sein, das Zählbar in Laravel implementiert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy