还在拉拉维尔练习。此时,我有一个页面控制器,它查找对应页面(简单HTML部分)可用的所有部分,并将它们包括在刀片中,如下所示:
@foreach(@sections as @section)
@include('sections.' . $section->filename)然后,我有一个包含相应部分数据的sections表,以及一个包含JSON数据的columns列,如下所示:
{"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格式是有效的,我只是删除了一些格式,以保持这个问题的清晰。
发布于 2020-04-13 15:05:09
Laravel不支持JSON关系。
我已经为此创建了一个包:https://github.com/staudenmeir/eloquent-json-relations
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 }}https://stackoverflow.com/questions/61184953
复制相似问题