没有什么比看起来不优雅的代码更让我烦恼了。这是我向laravel过渡的原因之一。使用laravel我可以有效地编写我的应用程序。但是,Eloquent Models或Query Builder形式的SQL仍然让我眼前一亮。
Eloquent适用于单行查询:
$findUsername = User::find(Auth::id())->username;
但努力整齐地代表更复杂的查询。
示例1:
$lobbyid = Request::get('lobbyid');
// I personally prefer single line variables for neatness
$checkOnline = UserLobbyInfo::select('id', 'online')->where([
['userid', '=', Auth::id()],
['lobby', '=', $lobbyid]
])->first();
if (count($checkOnline) && $checkOnline->online == "1") {
// if the user is online make sure you send a leave message
// we do not have to actually set online to 0 because we are removing the whole record
$this->send([ "lobby" => $lobbyid ])->leave();
}
示例2:
return UserLobbyInfo::join('lobbies', 'lobbies.id', '=', 'user_lobby_info.lobby')
->select('user_lobby_info.userid',
'user_lobby_info.approved',
'user_lobby_info.invitedby',
'lobbies.id AS lobbyid',
'lobbies.title')
->where([
['user_lobby_info.userid', '=', Auth::id()],
['user_lobby_info.approved', '=', 2]
])
->orWhere(function ($query) {
$query->where('lobbies.owner', '=', Auth::id())
->where('user_lobby_info.approved', '=', 1);
})
->get();
这篇文章可能将我描述为过度挑剔或者ocd,但我的目的是写出我能做的最好的代码。这是学习曲线的一部分。我只想提出一些风格的想法,以便在我的代码中包含这些查询时自然流动。
我已经想到的事情:
答案 0 :(得分:-2)
你必须学习如何使用多对多关系,尝试使用elequant比查询构建器更容易