如何在laravel中定义多个belongsTo

Posted

技术标签:

【中文标题】如何在laravel中定义多个belongsTo【英文标题】:How to define multiple belongsTo in laravel 【发布时间】:2021-01-20 20:57:34 【问题描述】:

我的表有很多外键,例如 prefecture_id、gender_id 和 status_id。

我为那些桌子做了模型。

所以我想定义多个 belongsTo 方法,如下所示,使用查询生成器获取所有数据..

但实际上belongsTo不能这样使用。

public function foreign()

 return $this->belongsTo([
   'App/Prefecture',
   'App/Gender',                        
   'App/Status',
]

如果唯一的方法是为属于定义多个方法。

如何在查询构建器中获取所有属于数据。

请给我建议。

【问题讨论】:

【参考方案1】:

据我所知,没有办法从单一方法中获取多个belongsTo。您需要做的是为每个关系创建一个方法,当您想要加载关系时,您可以执行以下操作。

型号

public function prefecture()

    return $this->belongsTo(\App\Prefecture::class);


public function gender()

    return $this->belongsTo(\App\Gender::class);


public function status()

    return $this->belongsTo(\App\Status::class);

查询

// This will get your model with all of the belongs to relationships.

$results = Model::query()->with(['prefecture', 'gender', 'status'])->get();

【讨论】:

感谢您的回答!我知道这种方式。响应数据有对象。但我想直接将数据分配给表列名。有没有办法? 你能解释一下你想要达到的目标吗?您可以根据您设想的最终目标来编辑您的原始问题。

以上是关于如何在laravel中定义多个belongsTo的主要内容,如果未能解决你的问题,请参考以下文章

如何为 belongsTo 创建 Laravel 资源关系?

Laravel 自定义 belongsTo 动态绑定

未定义的属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$status。 Laravel 5.5 关系

Laravel:belongsTo()关系假设一对多关系而不是一对一

如何在孩子中使用hasMany,其中有belongsTo

Laravel 中的 BelongsTo 关系