代码之家  ›  专栏  ›  技术社区  ›  Exploit

仅从一组图像中选择一个图像

  •  0
  • Exploit  · 技术社区  · 5 年前

    我有两张桌子让我给你看看它的样子,

    Projects
    ---------
    id
    
    Images
    -------
    id
    projects_id
    image
    is_default
    

    上载项目的图像时,会上载多个图像尚未设置默认图像。所以当我像这样运行查询时,

    $projects = Project::leftJoin('images', 'projects.id', '=', 'images.project_id')->get();
    

    因此,如果我在images表中列出了4个图像,在projects表中列出了一条记录,那么我将使用所有用于该项目的不同图像得到4个具有相同信息的项目的结果。

    如何将其限制为只显示一个项目记录,该项目记录的默认值设置为1,如果不存在,则会显示一个虚拟图像。

    2 回复  |  直到 5 年前
        1
  •  0
  •   salman faris    5 年前

    对fech单个记录使用first()。将表中的数据fech到$projects之后,使用以下条件

    If(count($projects) > 0)
    {
     //Image is existing. Use image for for doing something
    }else{
    //No image found. Use defult image
    }
    

    希望有帮助

        2
  •  0
  •   Rajkumar R    5 年前

    在这个查询中检查所需的条件。

    $projects = Project::leftJoin('images', function($join)
            {
                $join->on('projects.id', '=', 'images.item_id');
                $join->where('images.is_default', 1);
            })
        ->where('images.is_default', 1)
        ->get();