count() Parameter muss ein Array oder ein Objekt sein, das Zählbar in Laravel implementiert
Lesezeit: 4 Minuten
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
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
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
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) {
//
}
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.
}
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))
10493000cookie-checkcount() Parameter muss ein Array oder ein Objekt sein, das Zählbar in Laravel implementiertyes
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