gpt4 book ai didi

php - Laravel ownsToMany 在多对多关系中的数据透视表 id 上插入 '0'?

转载 作者:行者123 更新时间:2023-11-29 12:08:03 26 4
gpt4 key购买 nike

我有以下架构:

对象

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

关系为:

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

标签表:

    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 与这些参数匹配或将其留空,都会导致数据透视表上的一个或多个字段为 0。根本没用。

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

最佳答案

您是否尝试过将它们保留为空? Laravel 已经根据关系的表名做出外部和本地/其他关键假设。例如,由于 objects 表模型名称为 Object,因此它会猜测外键名为 object_id。此外,由于 tags 模型名称为 Tag,因此它将猜测关系中本地/其他键的 tag_id

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

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

关于php - Laravel ownsToMany 在多对多关系中的数据透视表 id 上插入 '0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com