在Laravel中获取id的单个帖子

时间:2018-01-25 21:08:16

标签: laravel laravel-query-builder

我实际上正在与Laravel合作,我知道如何获得一些帖子,但是如果我想使用leftJoin,当我尝试通过id获得一个帖子时,我有点迷失。

我有一个名为项目和组的表。它们有很多关系,所以我还创建了一个名为project_group的数据透视表。

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

$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,我无法访问其他表的列。当我尝试使用与索引页面类似的代码时,它只使用 - > first(),它给了我创建的第一个项目,但是 - > find($ id)没有用,我很困惑怎么做。

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

2 个答案:

答案 0 :(得分:2)

您必须使用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。

答案 1 :(得分:0)

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

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