2016-09-14 6 views
1

Ich benutze Laravel und ich habe eine viele zu viele Beziehung zwischen Produkten und Bestellungen. Es gibt eine Pivot-Tabelle namens order-product, die zusätzliche Informationen enthält, die von Zeit zu Zeit aktualisiert werden. Ich möchte das Feld 'updated_at' in der Auftragstabelle aktualisieren, wenn die entsprechende Zeile in der Pivot-Tabelle aktualisiert wird oder wenn beispielsweise ein neues Produkt hinzugefügt wird. Ist das möglich?Wie update_at des Modells aktualisiert wird, wenn eine Pivot-Tabelle aktualisiert wird

die Beziehung zwischen einem Artikel und einer Bestellung belongsToMany()

Edit: hier ist ein Teil des Codes

class Order extends Model 
{ 
protected $table = 'order'; 
protected $dates = ['updated_at']; 

public function products() 
    { 
     return $this->belongsToMany(Product::class, 'order_product'); 
    } 
} 

Wenn ich will, seine Produkte zu entfernen, indem auftrags- $> Produkte Aufruf() -> detach()

wo platziere ich den $ berührt Array, das ist in der Laravel docs erwähnt here

Ich habe versucht, es dem Produktmodell hinzuzufügen, aber es funktioniert nicht.

+1

Check this out: https://laravel.com/docs/5.3/eloquent-relationships#touching-parent-timestamps – Neat

Antwort

1

Sie können die Touching Parent Timestamps verwenden, hier ist ein Beispiel (von Laravel Docs).

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Comment extends Model 
{ 
    /** 
    * All of the relationships to be touched. 
    * 
    * @var array 
    */ 
    protected $touches = ['post']; 

    /** 
    * Get the post that the comment belongs to. 
    */ 
    public function post() 
    { 
     return $this->belongsTo('App\Post'); 
    } 
} 
+0

Ich habe das versucht, und es funktioniert nicht. Ich denke das ist, weil ich die Pivot-Tabelle nicht eines der Modelle aktualisiere. – user3552551

+0

Nun, Sie verwenden ein goesToMany() -> withPivot() Recht, das sollte immer noch funktionieren, da es nur eine Relation zurückgibt, es funktioniert für mich mindestens – Neat

+0

Ich habe protected $ touches = ['order']; zum Produktmodell. Vielleicht stelle ich es nicht an den richtigen Ort? – user3552551

Verwandte Themen