wake-up-neo.net

Lösen Sie das Problem der Aktualisierung auf PHP 7.2 in der Anwendung laravel 5.4

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?

5
atieh mokhtary

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.

5
Bhavin Solanki

Fügen Sie einfach @ vor count hinzu. I.E.

@count(object or array);
4
Amos Chihi

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
}
0
Rahul Tathod

versuche dies: 

$array = array_merge(
    collect($model->toSearchableArray())->toArray(), $model->scoutMetadata()
);

auch beim Zählen der Modellinstanz durch ->count() anstelle von count()

0
DorienCragen

Führen Sie die folgenden Schritte aus, um array_merge () - Problem zu lösen:

  1. 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,];

  2. 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.

0
Minar Mnr