2017-11-29 2 views
0

Ich versuche, eine Zeile mit einer anderen in meiner Datenbank zu aktualisieren. Ich kann keinen Weg finden, dies zu tun.Zeile mit Daten aus einer anderen Zeile in der gleichen Tabelle in Laravel aktualisieren

Ich habe eine Elternlinie und eine Kindlinie. Ich möchte die PARENT-Aktivität mit der CHILD-Aktivität (Entwurf) aktualisieren.

In meinem Controller:

public function update(UpdateRequest $request) 
    { 
    if (Auth::user()->hasRole('Administrateur')) 
    { 
     // DRAFT ACTIVITY 
     $id = $request->id; 
     $activity = Activity::find($id); 

     // PARENT ACTIVITY 
     $parent_id = $activity->parent_id; 
     $parent_activity = Activity::find($parent_id); 

     DB::table('activities')->??? 

     } 
    } 

Können Sie mir helfen? Vielen Dank !

+0

was möchten Sie aktualisieren? – jeugen

+0

Diese Struktur macht Sinn ... Du findest eine Aktivität mit einer ID, dann hast du eine parent_id, und dann suchst du nach Aktivität mit parent_id..aber diese Aktivität hat auch eine Spalte parent_id..oder liege ich falsch? Können Sie Ihre Datenbankstruktur anzeigen? – robbyrr

+0

Haben Sie '$ parent_activity = $ activity' und' $ parent_activity-> save() '?? –

Antwort

0

Der einfachste Weg wäre, die update Methode auf Ihrem Activity Modell zu verwenden und die neuen Daten als Parameter zu übergeben.

ZB:

$parent_activity->update([ 
    'someProperty' => $activity->someProperty, 
    ... 
]); 

Vergessen Sie nicht, mass assignment zu ermöglichen, indem geschütztes Eigentum Hinzufügen $fillable, zu Ihrem Activity Modell.

Um alle Daten zu Ihrem $parent_activity kopieren Sie so etwas wie tun könnte:

$someData = $activity->toArray(); 

$parent_activity->update($someData); 

gewarnt werden Sie nur die gewünschten Eigenschaften aktualisieren und können nicht die parent_id sagen. Sie können dies verhindern, indem Sie den array_except() Helfer verwenden.

$someData = array_except($activity->toArray(), ['parent_id']); 

$parent_activity->update($someData); 
Verwandte Themen