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

relation on column with different name from model in laravel

我有两个 table 作为 eventsorganisations。在一个组织中可能有多个事件。过去我不熟悉 laravel 所以我创建了事件和组织模型。我在事件的迁移中添加了外键 table as

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

现在我无法将organization_id更改为organizations_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

然后它给出了一个例外

Column not found: 1054 Unknown column 'events.organizations_id' in 'where clause' (SQL: select * from events where events.organizations_id = 3 and events.organizations_id is not null)

我知道我必须将组织模型保留给组织,但现在不可能。那么还有其他方法可以用 organization_id 映射它吗?

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

在事件模型中:

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

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