Faker in Kombination mit sqLite In-Memory-Datenbank zum Testen in Laravel in letzter Zeit verwendet und ich habe dieses seltsame Problem, wo mein Modell eine Fabrik hat und alles außer der ersten Variablen (was auch passiert der Primärschlüssel der Tabelle sein) wird korrekt gesetzt.Laravel 5/Faker - Änderungen der Werksdaten
der weitere Lassen erklären, die Variable I auf Zeige bin verwendet die folgende Regel in der Fabrik:
'kvk' => strval($faker->randomNumber(9)),
So soll es eine Zeichenfolge, die eine 9-stellige Zahl worden. Nun ist der nächste Schritt ist der Aufruf der Fabrik von meinem Controller Test und ich habe auch einen anderen User-Modell, das diese ‚kvk‘ Variable von meiner Firma verwendet als Fremdschlüssel-Referenz:
$this->_company = factory(Company::class)->create([ 'address_id' => $this->_address->id ]);
$this->_user = factory(User::class)->create([ 'kvk' => $this->_company->kvk ]);
Aber wenn ich legte einen echo $ dieses -> _ unternehmen-> kvk; zwischendurch zeigt es mir, dass 'kvk auf 1 gesetzt ist, was aufgrund der Regel, die ich in meiner Fabrik aufgegeben habe, nicht möglich sein sollte.
Schließlich wird der Benutzer verwendet, um die Sitzung in dem Test zu verspotten und auch zu überprüfen, verwendet wird, ob ich die Rechte haben sollte eine Adresse mit der folgenden Kontrolle zu bearbeiten:
$user = Auth::user();
$company = Company::where('kvk', $user->kvk)->first();
$address = Address::whereId($id)->first();
if($company->address_id != $address->id)
{
return abort(403);
}
Also zuerst bekomme ich die aktuelle eingeloggter Benutzer (der oben auf den erstellten Benutzer gespottet wird, und dies funktioniert einwandfrei.) Als nächstes bekomme ich die Firma, die mit diesem Benutzer verbunden ist (was der oben erstellte sein sollte, da ich die Firma-> kvk als Fremdschlüsselverweis benutzt habe) Wenn ich jedoch das gespeicherte Unternehmen in mein Logbuch auslade, sehe ich, dass der kvk auf eine 9-stellige Zeichenkette eingestellt ist, wie es sein soll.
Ich kann wirklich nicht sagen, warum zuerst der kvk auf 1 gesetzt wird und danach in meinem Test vollkommen in Ordnung ist, wie es sein sollte, aber mein Test schlägt fehl, weil der falsche Bezug in meinem Benutzer eingestellt ist finde nicht die richtige Firma. Hast du eine Idee, was könnte der Grund dafür sein? Ich habe auch versucht, die 'kvk' explizit beim Erstellen mit der Fabrik, aber dies funktioniert auch nicht und wird immer Ausgabe 1.