Laravel 多态关系 0 个结果

Laravel polymorphic relationship 0 results

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

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

根据示例 Group::first()->with('messages')->get() 将 return 一个空消息数组。

我的消息数据库表是 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');

这些return为空。

使用的示例数据: 1

有什么想法吗?

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

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

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

从组更改为 App\Group。