在 Laravel 中通过 id 获取单个 post

Get the single post by id in Laravel

我实际上正在与 Laravel 合作,我了解如何获得 post 的集合,但是当我尝试只获得一个 post 如果我想使用 leftJoin,按 id。

我有一个 table 项目和组。它们之间存在多对多关系,因此我还创建了名为 project_group.

的枢轴 table

此代码将 return 索引页面上的项目集合。

$projects = DB::table('projects as p')
            ->leftJoin('project_group as pb', 'pb.project_id', 'p.id')
                ->join('groups as g', 'g.id', 'pb.bodywork_id')
            ->select('p.*', 'g.*')
                ->orderBy('p.created_at', 'desc')
                ->paginate(10);

在单页上我也想用这样的东西,只是为了只根据ID(主键)获取项目。

$project = Project::find($id)

工作正常,但没有 leftJoin,我无法访问其他 table 的列。当我尝试使用与索引页面类似的代码时,它只能与 ->first() 一起使用,这给了我创建的第一个项目,但是 ->find($id) 没有用,我很困惑该怎么做做。

如有任何帮助,我将不胜感激。谢谢

Laraval 可以处理 many to many 关系。 如果您像这样构建模型和迁移,则可以使用 Model::find($id)

如果您需要代码方面的帮助,我会附上我的答案。

您必须使用 find() 来仅通过主键获取数据,而没有其他条件,例如 Project::join('groups', 'groups.project_id','=', 'project.id')->find($id)。在您的情况下,您应该使用 first()where() 设置 PK 的条件。
例如:
$project = Project::join('groups', 'groups.project_id','=', 'project.id')->where('project.id',$id)->first(),其中 id 是您的 PK。