php - 有没有办法在 laravel 连接中获取所有相关数据?
问题描述
我有两个名为posts
and的表categories
。这两个表具有一对多的关系,我将它们写在这样的模型中:
class Post extends Model
{
...
public function category()
{
return $this->belongsTo(Category::class, 'category_id', 'id');
}
...
}
class Category extends Model
{
...
public function posts()
{
return $this->hasMany(Post::class, 'category_id', 'id');
}
...
}
当我$post = Post::find($id)
在控制器中使用并检索一篇帖子并用于$post->category
获取该帖子的类别时,这可以正常工作。但是如果我想一起检索所有帖子及其类别怎么办?我的意思是,假设我在数据库中有 10 个帖子,我必须$posts = Post::get();
获取所有帖子。现在,我如何获得每个帖子的类别?一种方法是循环!例如:
foreach($posts as $post) {
$post['category'] = $post->category;
}
return response()->json($posts);
是的!我想用 Json 回复,我之前忘了说,对不起。
有没有更好的方法来做到这一点?我搜索了,但我的搜索一无所获。如果有人回答我的问题,我将不胜感激。:)
解决方案
使用 json 在每个帖子模型中包含类别的最简单方法是简单地包含它with()
,它会自动转换它。
return Post::with('category')->get();
在Laravel
您不必在其中包装模型或集合时,response->json();
它会自动执行此操作。
推荐阅读
- java - 在Java中获取一个基本变量的地址真的不可能吗?
- python - 如何使用 Python 中的正则表达式从预定义的子字符串列表中替换或更新 DataFrame 的字符串实例
- graph-databases - 如何从 cosmos db [Gremlin API] 中的 valueMap 步骤将值列表转换为单个项目
- python - 从 Python 中的 Entry 中获取变量以创建 Cloud Env
- node.js - 将图像转换为可读流
- python-3.x - 如何使用python获取在浏览器中打开的url
- mysql - Mysql在have子句中传递变量
- arrays - 数组的程序跟踪?
- shell - 在大文件的每一行中提取唯一值的脚本
- reactjs - reactjs在开发中设置base-href