如何在 Laravel 8 中获取与 json 有一个 hasMany 关系的表的所有模型?

Posted

技术标签:

【中文标题】如何在 Laravel 8 中获取与 json 有一个 hasMany 关系的表的所有模型?【英文标题】:How to get all models of a table with one hasMany relationship to json in Laravel 8? 【发布时间】:2021-06-25 18:20:06 【问题描述】:

目标 获取所有具有一定hasMany关系的模型json格式的数据。我想,你也可以说:在 json 中包含 hasMany 关系数据的集合。 我有两个表:templatetemplate_field 以及两个模型。

第一个模型

class Template extends Model

    use HasFactory;

    /**
     * @return HasMany 
     */
    public function templateField(): HasMany
    
        return $this->hasMany(TemplateField::class);
    

第二个模型

class TemplateField extends Model

    use HasFactory;

    /**
     * @return BelongsTo 
     */
    public function template(): BelongsTo
    
        return $this->belongsTo(Template::class);
    

我能做的是:Template::all()->toJson()。但随后 templateField 数据丢失。

编辑 这行得通。

$collection = Template::with('templateField')->get();
$collection->toJson();

【问题讨论】:

【参考方案1】:
$collection = Template::with('templateField')->get();

return response()->json([
  'status' => true,
  'data'   => $collection
], 200);

【讨论】:

感谢您的建议,但这不是我想要的。我想要json里面hasMany关系的数据。 您应该在代码中添加一些解释,以便 OP 可以更好地理解它。

以上是关于如何在 Laravel 8 中获取与 json 有一个 hasMany 关系的表的所有模型?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 API:获取 id 返回空 json

如何在 Laravel 5.8 中获取关注用户的帖子

如何在关系表laravel 5.8中解码Json数据

如何在 Laravel 中从 json 索引计数

Laravel 8:如何使用邮递员发送 JSON 格式的验证响应

如何从 vue.js axios POST 在 Laravel 中获取 JSON?