我是Laravel或任何MVC的新手。我创建了模型,我从web.php创建了路径,我使用Blade创建了视图,我创建了控制器并从单个模型中获取了所有数据。现在,我想做一个连接或类似的东西。
我想得到一些东西:名字|部分名称|状态。
在我的用户模型中我有:ID |名称| SectionID |状态
在我的模型中我有:ID | SectionID |活性
目前我创建了这样的控制器:
public function show($name)
{
if(User::where('name', '=', $name)->exists())
{
return view('profile', ['user'=>User::where('name', $name)->first()]);
}
else
{
return 'User not found';
}
}
在我的刀片中,我得到的内容是这样的:{{ $user->name }}
嗯,你必须定义user
和section
模型之间的关系。请查看此主题,了解如何处理laravel Laravel Eloquent Relationships中的关系。
然后,无论何时获得用户,您都可以加载其在User
模型上定义的任何关系。
在你的情况下,你正在执行两个不必要的数据库调用,所以我建议你看看qazxsw poi。
让我们说用户有一个部分你在用户模型中定义关系如下:
DRY principle
然后是剖面模型的反向关系:
public function sections(){
return $this->hasOne(Section::class);
}
所以现在你在控制器中的方法可能看起来像这样:
public function user(){
return $this->belongsTo(User::class);
}
通过这种方式,您可以加载与该用户关联的部分,以获取有关Laravel public function show($name){
return view('profile', ['user'=>User::with('sections')->where('name', $name)->firstOrFail()]);
}
的更多信息
然后在刀片中,您可以访问eagerloading或user
模型中的任何属性。