首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔: JSON的雄辩关系

拉勒维尔: JSON的雄辩关系
EN

Stack Overflow用户
提问于 2020-04-13 09:31:16
回答 1查看 1.1K关注 0票数 0

还在拉拉维尔练习。此时,我有一个页面控制器,它查找对应页面(简单HTML部分)可用的所有部分,并将它们包括在刀片中,如下所示:

代码语言:javascript
复制
@foreach(@sections as @section)
  @include('sections.' . $section->filename)

然后,我有一个包含相应部分数据的sections表,以及一个包含JSON数据的columns列,如下所示:

代码语言:javascript
复制
 {"header":"Section column 1", "text":"bruh?", "image_id":""},
 {"header":"Section column 2", "text":"bruh?", "image_id":""},
 {"header":"Section column 3", "text":"bruh?", "image_id":"7"}

正如您所看到的,image_id应该使用雄辩的关系从images表中调用文件名(我想它将是一对多的)。

是的,我知道在表中存储JSON并不是最好的解决方案(特别是如果您想从它交叉请求数据),但这是我想出的最好的解决方案。

因此,问题是:--如何使用JSON对象的ID获取图像的文件名--除了JSON之外,还有其他解决方案吗?

columns表和JSON格式用于定义一些属性,因为我的一些部分有3-9个文本列(col-md-3),每个列都有一个不同的头、文本和图像,所以我将它们存储在JSON中。

我的JSON格式是有效的,我只是删除了一些格式,以保持这个问题的清晰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 15:05:09

Laravel不支持JSON关系。

我已经为此创建了一个包:https://github.com/staudenmeir/eloquent-json-relations

代码语言:javascript
复制
class Section extends Model
{
    use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;

    protected $casts = [
       'columns' => 'json',
    ];

    public function image()
    {
        return $this->belongsTo(Image::class, 'columns->image_id');
    }
}

class Image extends Model
{
    use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;

    public function sections()
    {
       return $this->hasMany(Section::class, 'columns->image_id');
    }
}

{{ $section->image->filename }}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61184953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档