在Laravel 4中使用同步时,updated_at时间戳未更新

时间:2014-05-28 19:03:43

标签: laravel-4 eloquent polymorphic-associations

我使用以下代码更新有关组织的标签和其他信息:

Route::put('org/{org}', function(Org $org){
    $org->description = Input::get('description');
    $org->website = Input::get('website');
    $org->save();

    $org->tags()->sync(Input::get('tags'));

    return Redirect::to('org/'.$org->id)
        ->with('message', 'Seccessfully updated page!');
});

但是,如果我只更改与此组织关联的标记,则不会更新updated_at字段。我将protected $touches = array('org');添加到我的Tag模型中,但这似乎只适用于belongsTo关系,而orgs和tags之间的关系是多对多的多态关系。

有没有办法让同步功能自动更新默认的updated_at时间戳?

手动完成,如下所示,即使我的编辑实际上没有改变任何内容,也会更新时间戳:

$org->updated_at = \Carbon\Carbon::now()->toDateTimeString();
$org->save();

1 个答案:

答案 0 :(得分:2)

您必须在touches模型上设置Tag数组,但它有限制:

Eloquent猜测关系名称,因此只有在名称符合约定时才会起作用。

Organization型号 - > organizations关系。

如果你想手动更新时间戳,你可以改用它:

$model->touch();