【问题标题】:Joining tables with slug and id in Laravel 5在 Laravel 5 中使用 slug 和 id 连接表
【发布时间】:2018-08-20 17:35:08
【问题描述】:

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

【问题讨论】:

标签: php laravel


【解决方案1】:

您可以使用以下代码在一个查询中完成此操作

$data = Profile::leftJoin('user_table', 'user_id', 'user_table.id')
->where('slug',$slug)->first()

【讨论】:

    【解决方案2】:

    使用 slug 来识别配置文件的问题在于,slug 取决于可能会更改的配置文件数据。因此,如果用户在共享链接后编辑用于生成 slug 的数据,则指向配置文件的共享链接可能会失败。

    更好的方法是使用不太可能更改的标识符,例如唯一的用户 ID。然后,您可以将 slug 作为可选参数附加到链接:

    mydomain.com/users/5994/john-doe
    

    使用 5994 作为用户 ID,john-doe 作为 slug 组件。

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 2016-01-17
      • 1970-01-01
      • 2016-09-29
      • 2017-03-16
      • 2016-09-13
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多