与 laravel 中模型名称不同的列上的关系

时间:2021-04-05 10:51:48

标签: php laravel foreign-keys relational-database

我有两个表,分别是事件组织。在一个组织中可能有多个事件。过去我不熟悉 Laravel,所以我创建了事件和组织模型。我在事件表的迁移中添加了外键

$table->bigInteger('organization_id')->unsigned()->default(null)->nullable();

现在我无法将组织 ID 更改为组织 ID,因为有很多行代码。我也在 Organizations.php 模型中做了

public function events()
{
    return $this->hasMany(Events::class);
}

也在 Events.php 模型中作为

public function organization() 
{
   return $this->belongsTo(Organizations::class);
}

所以当我想将组织中的事件保存为

$organizations->events()->save($event); // $event is an object to be save in organization

然后它给出了一个例外

<块引用>

未找到列:1054 Unknown column 'events.organizations_id' in 'where clause'(SQL:select * from events where events.organizations_id = 3 and {{1} }.events 不为空)

我可以理解我必须将组织模型保留为组织,但目前不可能。那么还有什么其他方法可以将它与 organization_id 映射吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以,只需提供表示关系的列名作为关系中的第二个参数:

在事件模型中:

public function organization() 
{
   return $this->belongsTo(Organizations::class,'organization_id');
}

有关详细信息,请参阅 Laravel doc

相关问题