Laravel 更新多态关系中的子模型时更新父时间戳
在Laravel 5.1中,我有两个模型。一个是城市模型,一个是照片模型。Laravel 更新多态关系中的子模型时更新父时间戳,laravel,polymorphism,eloquent,laravel-5.1,Laravel,Polymorphism,Eloquent,Laravel 5.1,在Laravel 5.1中,我有两个模型。一个是城市模型,一个是照片模型。 城市与照片之间存在多态关系。 在更新城市照片时使用 $city->photos()->updateOrCreate($attributes,$values) 子时间戳将更新。但是父模型的时间戳(在本例中是City)不会相应地更新,我应该手动调用 $city->touch() 在Laravel中触摸子模型时,如何更新父模型的时间戳?要更新父模型的时间戳: 在Photo.php模型中,可以声明以下行:
城市与照片之间存在多态关系。 在更新城市照片时使用
$city->photos()->updateOrCreate($attributes,$values)
子时间戳将更新。但是父模型的时间戳(在本例中是City)不会相应地更新,我应该手动调用
$city->touch()
在Laravel中触摸子模型时,如何更新父模型的时间戳?要更新父模型的时间戳: 在Photo.php模型中,可以声明以下行:
class Photo extends Model
{
protected $touches = ['city']; //The 'city' refers to your parent's model
}
现在,当您像之前一样更新照片模型时:
$city->photos()->updateOrCreate($attributes,$values)
它将自动更新父模型的时间戳,在您的情况下,将更新城市表。用于多态关系
class Photo extends Eloquent {
protected $touches = ['city'];
public function city() {
return $this->morphTo() // add this function if not already done
}
}
class City extends Eloquent {
public function photos() {
return $this->morphMany(App\Photo::class, 'city');
}
}
在这种情况下,当照片更新时,它会接触到他的父母(这种情况下的城市)
希望有帮助。如果希望透视表自动维护created_at和Update_at timestaps,请在关系定义上使用WithTimestaps方法:return$this->belongTomany('App\Role')->WithTimestaps();我想知道你为什么喜欢这种行为?谢谢你发布你的型号代码?我做过类似的案例,效果很好。请参阅本文档,了解如何在更新子项时更新父项时间戳,只需将答案从“照片”更改为“照片”。它应该参考孩子的模型。这也适用于一个模型
属于另一个模型的关系。我有一个多态关系。不:)我只是手动触摸模型。测试你的答案,但没有帮助。不管怎样,谢谢你