Ich habe diese Version meiner laravel - Anwendung in dieser Woche auf php 7.2 aufgerüstet, und seitdem habe ich große Probleme mit meiner laravel - Anwendung. vor dem Upgrade von php auf 7.2 funktionierte alles einwandfrei.
das Hauptproblem betrifft die Funktionen count () und array_merge (), die diesen Fehler auslösen:
für die array_merge()
-Funktion lautet der Code wie folgt:
$array = array_merge(
$model->toSearchableArray(), $model->scoutMetadata()
);
if (empty($array)) {
return;
}
ErrorException · array_merge (): Argument # 1 ist kein Array.
und ich habe count()
-Fehler zum Beispiel bei diesem Code, wenn das Modell keine Datensätze und null zurückgibt:
count(TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get())
count()
: Der Parameter muss ein Array oder ein Objekt sein, das Countable implementiert.
meine Laravel-Version ist 5.4
jetzt ist meine Frage, wie kann ich die Probleme lösen, und löst ein Upgrade auf laravel 5.5 eines der Probleme?
In PHP 7.2count()
Verhalten in der folgenden RFC geändert: https://wiki.php.net/rfc/counting_non_countables
Sie können jedoch mithilfe von ->count()
in laravel eine Zählung erhalten. Hier ein Beispiel:
$count = TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get()->count();
Auf diese Weise können Sie die Gesamtzahl der Datensätze ermitteln.
Fügen Sie einfach @
vor count
hinzu. I.E.
@count(object or array);
fügen Sie einfach folgenden Code in web.php hinzu
if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
// Ignores notices and reports all other kinds... and warnings
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
// error_reporting(E_ALL ^ E_WARNING); // Maybe this is enough
}
versuche dies:
$array = array_merge(
collect($model->toSearchableArray())->toArray(), $model->scoutMetadata()
);
auch beim Zählen der Modellinstanz durch ->count()
anstelle von count()
Führen Sie die folgenden Schritte aus, um array_merge () - Problem zu lösen:
sluggable.php Konfigurationsdatei bei app/config mit Daten
return ['source' => null, 'maxLength' => null, 'method' => null, 'separator' => '-', 'unique' => true, 'uniqueSuffix' => null, 'includeTrashed' = > false, 'reserved' => null, 'onUpdate' => false,];
Führen Sie den Befehl aus, php artisan config:cache
Zum Lösen des Count () - Problems: Try This
count(): Parameter must be an array or an object that implements Countable.
Eigentlich ist es kein Fehler, es ist ein erwartetes Verhalten. Laravel 5.4 oder 5.5 ist nicht vollständig kompatibel mit Php 7.2 . Das Verhalten von Count () ändert sich einfach bei PHP 7.2 Schauen Sie sich das an
Eine andere Möglichkeit ist die Verwendung von PHP 7.1 oder niedriger, bis das Kompatibilitätsproblem behoben wurde.