在 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。
我实际上正在与 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。