如何在目标模型 Laravel 中通过 model_type 获取关系

How to get relations by model_type in target model Laravel

我有一个不同消息的列表(短信、phone 电话、普通消息等),我正在尝试通过 model_type 将此列表连接起来 table和 model_id:

Schema::create('lead_messages', function (Blueprint $table) {
    $table->foreignId('lead_id')->nullable()->constrained('leads')->onDelete('cascade');
    $table->string('model_type');
    $table->unsignedBigInteger('model_id');
    $table->index(['model_id', 'model_type'], 'lead_messages_model_id_model_type_index');
    $table->primary(['lead_id', 'model_id', 'model_type'], 'lead_messages_lead_model_type_primary');
    $table->softDeletes();
    $table->timestamps();
});

然后我可以为用户获取提要。

现在我正在尝试按模型获取所有实体。 是否可以通过table字段获取它们?
类似的东西(当然这是错误的代码):

public function data()
{
    return $this->hasOne('model_type', 'id', 'model_id');
}

好的,这比看起来容易。我的问题in documentation有答案。此代码将为我提供必要的数据:

型号:

public function data()
{
    return $this->morphTo(__FUNCTION__, 'model_type', 'model_id');
}

服务:

$response = LeadMessage::whereLeadId($request->lead_id)
    ->with('data')
    ->paginate(30);

感谢@Giles Bennett