我有2张桌子; user
和user_info
及其模型User
和UserInfo
。 user
拥有id
,expire
和user_info_id
,而user_info
拥有id
和username
。
我想让expire
大于或小于$now
或null
的所有用户,并且我想按username
对列表进行排序。最后一部分是我的问题所在。
我目前所拥有的;
$usersQ = User::where ('expire', '>', $now)->orWhereNull ('expire');
$usersCount = $usersQ->count ();
$users = $usersQ->get ();
我试过了;
$usersQ = User::with ('user_info')->join ('user_info', 'user.user_info_id', 'user_info.id')->where ('expire', '>', $now)->orWhereNull ('expire')->orderBy ('username');
不幸的是,这不起作用(SQL语法错误)。
注意:我确实需要User
作为我的主要实体,而不是UserInfo
,因为我需要在我的视图中User
提供其他信息。
SELECT user.*, user_info.username, user_info.fname, user_info.lname
FROM user
INNER JOIN user_info ON user.user_info_id = user_info.id
ORDER BY user_info.username ASC;
然后我就可以访问user
和user_info
中的3个字段中的所有内容。我怎么用Laravel做到这一点?
答案 0 :(得分:1)
$users = User::with('user_info')->where('expire', '>', $now)
->orWhereNull('expire')->get();
$usercount = $users->count();
答案 1 :(得分:0)
$usersQ = User::join ('user_info', 'user_info.id', '=', 'user.user_info_id')->orderBy ($order)->where ('expire', '>', $now)->orWhereNull ('expire');
$usersCount = $usersQ->count ();
$users = $usersQ->get ();
这项工作正常,除了Laravel中的错误(是的,我认为这是一个错误),它会覆盖任何具有重复名称的字段的值。如果有人知道修复的话会很棒...如果你的id
被覆盖,联接几乎没用。