Laravel Schema是否能够开箱即用地管理多态关联?

Ast*_*rek 5 php polymorphic-associations laravel

我想为项目创建一些可评论的模型,但我找不到任何创建评论迁移脚本的参考,我只在vimeo上发现了这个视频:Laravel 4 - Eloquent Collections&Polymorphic Relations.

我应该明确添加多态列吗?

Schema::create('comments',function($table){
    $table->increments('id');
    $table->text('body');
    $table->string('commentable_type');
    $table->integer('commentable_id');
    $table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)

问题来自于构建器在密钥是外键时期望程序员 $table->foreign('user_id')->references('id')->on('users');

and*_*whl 6

Laravel~4.1有一种方法可以实现这个目的:

$table->morphs('itemable');
Run Code Online (Sandbox Code Playgroud)

创建:

itemable_id
itemable_type
table_name_itemable_id_itemable_type_index
Run Code Online (Sandbox Code Playgroud)

如果索引太长,则第二个可选参数是替换索引名称.签名是:

public function morphs($name, $indexName = null);
Run Code Online (Sandbox Code Playgroud)


Phi*_*eon 0

多态连接与 Schema 无关,它们是一个 Eloquent 功能,允许在任何其他类型的模型之间建立关系。

您可以查看相关文档:

http://four.laravel.com/docs/eloquent#relationships

  • 我理解 Schema 和 Eloquent 是不同的概念。我想知道是否有添加多态列的快捷方式,就像“$table->timestamps()”一样。我猜这意味着逻辑与存储的混合。 (2认同)