2014-05-21 46 views
-1

我有要创建的多态记录。在模型上抽象多态“保存”

这工作

$user->logs()->create(['message' => 'message', 'failed' => false]); 

但我怎么转换,要像这样:

$user->logs()->logSuccess('message'); 

在我的日志模型类我尝试这样做:

public function scopeLogSuccess($query, $message) 
{ 
    $this->create(['message' => $message, 'failed' => false]); 
} 

但没有任何反应。查询运行 - 但没有数据被插入到数据库中,并且不会引发错误。

我也试过这样:

public function scopeLogSuccess($query, $message) 
{ 
    $this->message = $message; 
    $this->failed = false; 
    $this->save(); 
} 

A“记录”保存在记录表 - 但它不具备“loggable_id”,或者说应该在多态的关系会产生“loggable_type” - 他们是只是空白。

+0

详细说明“但似乎都不起作用?” - 任何错误或只是意想不到的结果? – Andreas

+0

对不起 - 问题更新了额外的信息。 – Laurence

+0

大声笑...为什么有人低估了这个问题?它似乎对我来说是一个有效的问题... – Laurence

回答

1

您需要扩展MorphTo类并添加您的自定义方法 - 我没有看到实现此目的的简单方法。我建议只在你的用户模型中加入logSuccess等方法。

+0

嗯...但后来我需要,但logSuccess到我的其他模型,也保存日志... – Laurence

+0

...或者我可以做一个特点登录或什么 - 并附加到可登录的模型... – Laurence

+0

一个特质将是一个好主意,分享这种行为,是的。 – Andreas