我有一个基础Message
类,用于使用多态关系附加自定义消息类型的收件箱,这些类型都实现相同的接口,并根据其类型在视图中表现不同。显示所有这些都在游泳,但是当我尝试用代码添加这些时,我遇到了麻烦。
这是Message类:
<?php
class Message extends Eloquent {
public function author() {
$this->belongsTo("User", "author_id");
}
public function recipient() {
$this->belongsTo("User", "recipient_id");
}
public function message() {
$this->morphTo();
}
}
我附加到message()
的模型实现了MessageInterface
,所以我想我可以快速帮助通过Message::send()
附加此模型的关系:
public static function send(MessageInterface $message, User $to, User $from) {
if (! $message->exists)
$message->save();
$parent = new static;
$parent->author()->associate($from);
$parent->recipient()->associate($to);
$parent->message()->associate($message); // line that errors
return $parent->save();
}
但是这最终会让我看起来无限递归:
FatalErrorException: Maximum function nesting level of '100' reached, aborting!
这是studly
函数,在某些搜索中,当两个模型相互引用时,似乎会发生这种情况。
消息表的模式是:
$table->increments("id");
$table->integer("message_id")->unsigned();
$table->string("message_type");
$table->integer("recipient_id")->unsigned();
$table->integer("author_id")->unsigned();
$table->timestamps();
我在做什么真的错了,在这里?我查看了the source中的morphTo
方法调用并尝试查看此处是否存在反射问题(抓取函数名称和蛇套管它),但我似乎无法找到正在发生的事情。 associate方法调用只是设置属性并获取message_type
的类名,然后返回关系。
错误中没有有用的信息;它是一个没有上下文的Symfony\Component\Debug\Exception\FatalErrorException
。
我正在运行Laravel 4.1