Laravel belongsToMany 在多对多关系中的枢轴 table id 上插入“0”?

Laravel belongsToMany inserting '0' on pivot table ids in a many to many relationship?

我有以下架构:

一个objectstable

    Schema::create('objects', function(Blueprint $table) {
        $table->increments('object_id');
    });

与以下关系:

public function tags() {
    return $this->belongsToMany('Tag', 'objects_tags_pivot', '?', '?');
}

A tags table:

    Schema::create('tags', function(Blueprint $table) {
        $table->increments('tag_id');
    });

与以下关系:

public function objects() {
    return $this->belongsToMany('Object', 'objects_tags_pivot', '?', '?');
}

以及它们之间存在的多对多关系的支点:

    Schema::create('objects_tags_pivot', function(Blueprint $table) {
        $table->increments('object_tags_id');
        $table->integer('object_id')->unsigned();
        $table->integer('tag_id')->unsigned();
    });

我的问题是在我目前有问号的关系参数中插入什么? Laravel 4.2 文档建议第三个参数是 $foreignKey,第四个是 $localKey。这不是很有帮助。

每次尝试将 object_idtag_id 与这些参数匹配,或将它们留空,都会导致枢轴 table 上的一个或多个字段为 0。一点用都没有。

我应该按什么顺序指定每个参数?

你试过让它们为空吗? Laravel 已经根据关系的 table 名称做出了外部和本地/其他关键假设。例如,由于 objects table 模型名称是 Object 它会猜测外键名为 object_id。此外,由于 tags 模型名称是 Tag,它会猜测 tag_id 作为关系中的本地/其他键。

如果您想手动填写它们,您需要插入表明关系如何链接的列名。例如:

public function tags()
{
     $this->belongsToMany('Tag', 'objects_tag_pivot', 'object_id', 'tag_id');
}