【问题标题】:Relation not working properly using in Laravel关系在 Laravel 中无法正常使用
【发布时间】:2021-05-11 18:00:17
【问题描述】:

我有一个包含帖子的帖子表,而 media_images 包含与特定帖子相关的图像。这是我正在使用的关系,但在目前的情况下,如果帖子没有图像,则不会返回任何帖子,但我也想在没有图像的情况下返回帖子。

  $where[] = ['category_id', '=', $request->category_id];
            return Posts::where($where)->with('media_images', 'category')->WhereHas('media_images', function ($query) use ($media_id) {
                if (!empty($media_id)) {
                    $query->InMediaId($media_id);
                } 
            })->paginate(10);

【问题讨论】:

  • whereHas('media_images') 将仅显示带有 media_images 的帖子。但如果您想要所有帖子,请考虑改用 leftJoin('media_images')。

标签: laravel laravel-5 eloquent laravel-4


【解决方案1】:

您可以在查询中添加orHas,它为查询添加关系计数/存在条件

 $where[] = ['category_id', '=', $request->category_id];
            return Posts::where($where)->with('media_images', 'category')->WhereHas('media_images', function ($query) use ($media_id) {
                if (!empty($media_id)) {
                    $query->InMediaId($media_id);
                } 
            })->orHas('media_images','=',0)->paginate(10);

【讨论】:

  • 不错的解决方案,我喜欢这个。
  • @OMR :谢谢,此查询正在运行,但它正在返回其他类别数据,并且 category_id 也在 post 表中,当我删除 orHas 它返回数据类别时,它不会显示不显示的数据有图片,你能告诉我是什么问题
猜你喜欢
  • 2015-03-22
  • 1970-01-01
  • 2019-07-30
  • 2019-06-04
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多