我对Laravel非常陌生,我正在努力学习如何以你应该的方式编写代码。
我有两个表,一个user
表和一个profiles
表,当您加载配置文件时,它还会根据该配置文件从用户表中获取数据。它使用slug来加载配置文件。
当我试图学习Laravel并尝试学习构建查询时,我想知道使用连接的一个查询可能会出现以下情况吗?如果是这样,我该怎么做?
public function index($slug)
{
$profile_data = Profile::where('slug',$slug)->first();
$user_data = User::where('id',$profile_data->user_id)->first();
return view('profile',['profile' => $profile_data, 'user' => $user_data]);
}
答案 0 :(得分:0)
使用块来识别配置文件的问题在于,块取决于可能会更改的配置文件数据。因此,如果用户在共享链接后编辑用于生成该段的数据,则指向配置文件的共享链接可能会失败。
一种更好的方法是使用一个不太可能更改的标识符,例如唯一的用户ID。然后,您可以将子弹作为可选参数附加到链接:
mydomain.com/users/5994/john-doe
将5994作为用户ID,并将john-doe作为子弹组件。
答案 1 :(得分:0)
您可以使用以下代码在一个查询中完成
$data = Profile::leftJoin('user_table', 'user_id', 'user_table.id')
->where('slug',$slug)->first()