所以我正在使用laravel 5开发一个应用程序,我有一些与其他许多模式有多态性的模型。例如,我的评论与文档和帖子等许多其他模型有关。所以我在这些模型之间有多态关系。
我的评论表迁移如下:
Schema::create('comment', function (Blueprint $table) {
$table->increments('id');
$table->integer('commentable_id')->unsigned()->comment('Polymorphic');
$table->string('commentable_type')->comment('Polymorphic');
$table->integer('comment_type_id')->unsigned()->comment('Type of comment');
$table->integer('user_id')->unsigned()->comment('Id of user');
$table->text('body')->comment('Comment as text');
$table->timestamps();
$table->foreign('comment_type_id')->references('id')->on('comment_type')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('user')->onDelete('cascade');
});
现在,我可以选择通过向/comments
发送POST请求并将commentable_type
与请求一起传递来创建注释,因此它将决定哪个模型与注释相关。因此,如果我在那里传递post
,它将与帖子相关。
但我的雇主强调,这对前端开发人员来说是不必要的负担,他们不需要知道后端的多态关系。他建议和替代也是有道理的。
因此,当帖子有新评论时,我会在/posts/{id}/comments
上进行POST或PUT,它会为新帖子创建新评论或类似地为文档创建评论。
我担心的是,由于我们在系统中存在大量的多态关系,从长远来看这将在更大规模上发挥作用还是难以维持。这里的标准是什么,还是纯粹基于我自己的需求和观点?