首页 > 解决方案 > 当我在连接查询中使用“with”时,选择除了 laravel eloquent 中的某些列

问题描述

我在 laravel 的 join eloquent 中使用 from "with",我想在获取查询结果时使用 select 但返回错误,因为例如我使用 with(['user]) 并且 user 是我的模型名而不是表名(表名是用户)有什么方法可以在我的模型名称中使用“选择”?或者我使用除了获取除特定列之外的所有默认列?

谢谢

这是我的查询:

AlbumGalleryManagement::with('image','user')
        ->whereHas('organization', function ($q2) use ($organizationSlug){
            $q2->where('organization_slug', $organizationSlug);
        })
        ->join('province_approves','province_approves.approved_id','album_gallery_managements.id')
        ->where('province_approves.approved_type',self::ALBUMMODEL)
        ->where('published_at','<=',$nowDate)
        ->orderBy('published_at','DESC')
        ->orderBy('album_gallery_managements.id','DESC')
        ->paginate(self::PAGINATE);

标签: joinselecteloquent

解决方案


我使用 select() 来获取指定的列。在join中使用“with”;列结果进入关系标签,我很容易使用它们。

我的最后一个查询:

      AlbumGalleryManagement::with('image')
        ->whereHas('organization', function ($q2) use ($organizationSlug){
            $q2->where('organization_slug', $organizationSlug);
        })
        ->selectRaw('album_gallery_managements.*')
        ->join('province_approves','province_approves.approved_id','album_gallery_managements.id')
        ->where('province_approves.approved_type',self::ALBUMMODEL)
        ->where('province_approves.status_type',config('constants.status_type.approved'))
        ->where('published_at','<=',$nowDate)
        ->orderBy('published_at','DESC')
        ->orderBy('album_gallery_managements.id','DESC')
        ->paginate(self::PAGINATE);

推荐阅读