在 Blade/Laravel 中按 ID 选择一个 eloquent 对象

Choosing an eloquent object by ID in Blade/Laravel

我在数据库中有数百个对象,我们称它们为盒子。

这就是结构。

id
user_id
size_id
color_id
shape_id

现在我得到了数据库的 "size" 条目,其中包含这些条目:

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 制作一个 table。这将是控制器:

$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 选择 size/shape/color 的名称。

我该怎么做?

提前致谢。

使用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 class:

中的每个模型定义 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);
}