2016-09-27 4 views
0

Ich benutze Laravel 5.3.Modellbeziehung speichern?

Wenn ich so etwas tun:

$posts = Post::where('id', 1) 
    ->with('stats') 
    ->first(); 

Ist es möglich, die stats Beziehung zu retten, wie:

$posts->stats->num_users = 5; 
$posts->stats->save(); 

Ist dies der richtige Weg, dies zu erreichen?

+0

Gibt es in Ihrem Code arbeiten? Denn wenn es so ist, warum sollte es dann kein richtiger Weg sein? Das Eager-Laden ist nichts anderes als das Zusammenfügen von Model-Instanzen, so dass es genauso funktioniert, wie '$ posts-> stats' eine Instanz des Modells zurückgibt, das Sie aktualisieren möchten –

Antwort

0

Sie können wie die

$posts = Post::where('id', 1) 
     ->with('stats') 
     ->first(); 

$stats = $post->stats; 

etwas tun, wenn Sie den Wert aktualisieren wollen, dann

$stats->update(['num_users'=> 5]); 

das tun sollten.

0

Ja, das ist möglich.

Es könnte jedoch nur sein, dass die 'stats'-Beziehung noch nicht für Ihr Post-Objekt erstellt wurde.

Wenn das der Fall ist, können Sie etwas tun könnte:

//retrieve the post 
$post = Post::with('stats')->find(1); 

//use existing stats object or new up one 
$stats = $post->stats ?: new PostStats(['post_id' => $post->id]); 
$stats->num_users = 5; 

//persist 
$stats->save(); 
Verwandte Themen