我面临一个非常基本的问题,但无法解决。
两个表:car_models
和gear_type
。结构如下:
在主页上,我必须显示所有型号以及配备档位说明的哪辆车。所以,我在做:
$modelos = Modelo::all();
foreach ($modelos as $modelo) {
$cambio = Cambio::where('id', '=', $modelo->cambio_id)->pluck('descricao');
}
// return $cambio;
return view('home', compact('banners', 'modelos', 'cambio'));
但是视图显示:
ErrorException (E_ERROR)
Undefined offset: 1 (View: /Users/marcellopato/Sites/primorossiseminovos/resources/views/home.blade.php)
Previous exceptions
Undefined offset: 1 (0)
...并且它应该在下图所示的字段中显示齿轮的类型。
答案 0 :(得分:3)
考虑到您在cambio_id
表中有外键{{1}},则您在模型中的关系应为:
modelos
那么您可以做:
class Modelo extends Model
{
public function cambio()
{
return $this->belongsTo(‘App\Cambio’);
}
}
class Cambio extends Model
{
public function cambio()
{
return $this->hasOne(‘App\Modelo’);
}
}
$modelos = Modelo::with(‘cambio’)->get();
是一个急切的加载,它为每个with()
实例获取cambio
。
那么您可以做:
modelo
以某种方式,我认为您的表结构可能会更新,关系可能会颠倒,但这也取决于业务情况。
答案 1 :(得分:0)
定义两个模型之间的关系:
class Modelo extends Model
{
public function cambio()
{
return $this->belongsTo(‘App\Cambio’);
}
}
在查询Modelo时加载关系:
$modelos = Modelo::with(‘cambio’)->get();
在您的视图(叶片)中,您可以显示以下齿轮描述:
@foreach($modelos as $modelo)
{{ $modelo->cambio->descricao }}
@endforeach
您可以在docs上了解有关模型关系的更多信息。