在Laravel 5中使用slug和id连接表格

时间:2015-04-25 13:26:14

标签: php laravel

我对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]);
}

2 个答案:

答案 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()