在Blade / Laravel中通过ID选择一个雄辩的对象

时间:2018-01-13 19:29:37

标签: php laravel blade

我有数百个对象,我们称之为数据库中的框。

这将是结构。

id
user_id
size_id
color_id
shape_id

现在,我为这个条目输入了一个“大小”条目:

id = 1
name = small
id = 2
name = big

与其他相同,例如颜色:

id = 1
name = red
id = 2
name = blue
id = 3
name = green
id = 4
name = yellow

与形状相同。你知道这个演习。

我想用Blade制作一张桌子。这将是控制器:

$boxes = boxes::where("user_id", Auth::user()->id)->get();
$sizes = size::all();
$colors = colors::all();
$shapes = shapes::all();
return view()... etc etc

现在在HTML / Blade中:

@foreach($boxes as $box)
<td>{{$box->name}}</td>
<td>{{$sizes->...}}</td>
<td>{{$shape->...}}</td>
<td>{{$color->...}}</td>
...

我想根据框中给出的ID选择尺寸/形状/颜色的名称。

我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用with()方法加载所有已创建的数据:

boxes::with('size', 'color', 'shape')->where('user_id', auth()->id())->get();

然后在视图中:

@foreach($boxes as $box)
    <td>{{ $box->name }}</td>
    <td>{{ $box->size->... }}</td>
    <td>{{ $box->shape->... }}</td>
    <td>{{ $box->color->... }}</td>

要完成这项工作,您还需要为Box类中的每个模型定义belongsTo()关系:

public function size()
{
    return $this->belongsTo(Size::class);
}

public function shape()
{
    return $this->belongsTo(Shapes::class);
}

public function color()
{
    return $this->belongsTo(Colors::class);
}