【问题标题】:How to query my model in Laravel with relationships using query builder如何使用查询构建器在 Laravel 中使用关系查询我的模型
【发布时间】:2020-04-20 23:36:33
【问题描述】:

我有三个模型:

  • 用户
  • 图片
  • 发布

他们的关系是:

  • 用户有很多图片,
  • 图像属于用户,
  • 用户有很多帖子,
  • 帖子属于用户,

在获得以下数据之前,如何使用 query builder 查询关系?

user_name: name,
image: [
  {
    ... 
  },
  {
   ...
  }
],
post: [
  {
   ...
  },
  {
   ...
  }
]```

【问题讨论】:

  • 你为什么不用eloquent?
  • @TsaiKoga eloquent 很棒,但是当涉及到大量数据时,即使使用急切加载关系也确实很慢
  • 我不认为查询生成器允许关系
  • 如果你使用查询生成器,那么你不需要在模型中建立关系
  • @KamleshPaul 是的......所以无论如何它都在那里,比如加入表格或某种形式?因为 eloquent 在处理大量数据时的表现

标签: mysql laravel laravel-query-builder


【解决方案1】:

$user = User::find(1);

$images = $user->images // images is function name as u added in relationship

$posts = $user->posts // posts is function name as u added in relationship


$response = [
'user_name' => $user->name,
'images' => $images,
'posts' => $posts,
];

return response($response);

你也可以用

$user = User::with(['images','posts'])->find(1);

【讨论】:

  • 除了使用 Eloquent 之外,还有其他方法吗?因为当我有数百条关系记录时,Eloquent 很慢
  • no Eloquent 并不慢,你必须使用 with 进行急切加载
  • 好吧,我会先尝试加载
猜你喜欢
  • 2021-06-05
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2014-01-18
  • 2016-12-01
相关资源
最近更新 更多