2017-08-04 70 views
0

我与Laravel有多态关系。 我的多态关系是Message-> messageable成为Group或Chat。Laravel多态关系0结果

从消息 - >可消息将会给我正确的结果(例如消息所关联的组或聊天)。

从示例Group :: first() - > with('messages') - > get()将返回一个空的消息数组。

我的邮件数据库表是 messageable_id messageable_type

我的模型方法如下

class Message extends Model 
{ 
public function messageable(){ 
    return $this->morphTo(); 
} 

^按预期工作

class Group extends Model 
{ 
function messages(){ 
    return $this->morphMany('Message','messageable'); 
} 

class Chat extends Model 
{ 
public function messages(){ 
    return $this->morphMany('Message','messageable'); 

这些空车返回。

示例数据使用: 1

任何想法?

回答

1

您的关系不正确。您需要引用完整的类名称空间,而不仅仅是类名称本身。例如。

class Group extends Model 
{ 
    public function messages() 
    { 
     return $this->morphMany(\App\Models\Message::class', 'messageable'); 
    } 
} 
+0

试过有/没有完整的命名空间,没有区别。 – Prodigle

+0

您的数据库模式是什么样的,专门用于形态化字段? – fubar

0

忘记在我的数据库messageable_type中包含名称空间。

从组更改为App \ Group。

+0

所以这是关系被错误定义;) – fubar