ich habe 2 Tabellen users
und user_meta
findOrNew gibt ein Array statt Objekt, wenn die Bedingung nicht auf id ist
in meinem users
Modell ich habe
function meta() {
return $this->hasOne('App\userMeta');
}
in meinem Controller, wenn ich Benutzer speichern möchten, und Benutzer meta
function store(Request $request , $id = 0) {
$user = User::findOrNew($id);
$user->save() ;
$meta = UserMeta::findOrNew(['user_id'=>$id]);
$user->meta()->save($meta);
}
wenn im meta zu speichern versuchen ich diesen Fehler erhalten
Argument 1 bestanden Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save() muss eine Instanz von Illuminate \ Database \ Eloquent \ Model, sein
hier ist das Problem UserMeta::findOrNew(['user_id'=>$id])
eine zurück Array anstelle von Objekt ... das ist seltsam .. während User::findOrNew($id)
selbst zurückkehrt und Objekt .... ich denke, es ist becuz meiner Bedingungen (es ist der einzige Unterschied zwischen 2 Abfrage)
gerade jetzt muss ich tun etwas wie das
$meta = UserMeta::findOrNew(['user_id'=>$id]);
if(is_array($meta)) {
$user->meta()->save($meta[0]);
} else {
$user->meta()->save($meta);
}
was ich nicht mag und falsch aussieht!
Vielleicht 'UserMeta' hat mehrere Zeilen mit der gleichen' user_id' – jonju
@jonju nein es ist eine 1to1 Beziehung so Datenbank wird nicht akzeptiert, die gleiche user_id mehr als einmal – hretic
Aber dies nicht 'HasOneOrMany" aussehen One-to-One-Beziehung. – jonju