排序有关表值(包括但现有关系的元素)

可以说我有两个表:用户和组织排序有关表值(包括但现有关系的元素)

users: 

id int,

name varchar,

type int,

deleted bool

organisations:

id int,

name varchar

deleted bool

,我想用的类型1名用户组织排序。我知道,当我想通过关系值排序我必须使用加入:

$organisationsModel -> join('users', 'organisations.id', '=', 'users.organisationId', 'left') 

-> select('organisations.*', 'users.name as userName')

-> where('users.type', 1)

-> where('users.deleted', 0)

-> orderBy('userName', 'ASC);

,但只显示有1型的用户组织(与删除设置为0),我的问题是:我可以修改这个查询也返回没有适当的用户连接它的值?

回答:

你需要一个左为了得到所有组织,要订购的结果您可以通过子句

$organisationsModel->leftJoin('users', function ($join) { 

$join->on('organisations.id', '=', 'users.organisationId')

->where('users.type', 1)

->where('users.deleted', 0);

})

->select('organisations.*', 'users.name as userName')

->orderByRaw('CASE WHEN users.type = 1 AND users.deleted = 0 THEN 1 ELSE 0 END DESC')

->orderBy('userName', 'ASC);

Another similar problem

以上是 排序有关表值(包括但现有关系的元素) 的全部内容, 来源链接: utcz.com/qa/262731.html

回到顶部