我想检查用户是否被禁止,这是有效的,但现在我想要一个返回用户名的函数。
这就是我现在所拥有的:
public static function CheckIfBanned($username)
{
$CheckBan = Ban::orderBy('expire', 'ASC')->where('lifted', '=', '0')
->where('expire', '>', \Carbon\Carbon::now())
->where('username', '=', $username)
->get();
if ($CheckBan)
{
return '<s>'.$username.'</s>';
}
else
{
return $username;
}
}
所以,这样可行,但只需要第一个用户。
我需要添加foreach吗?如果是这样,在哪里以及如何?
答案 0 :(得分:0)
假设您的代码工作正常并且给出了一个用户名列表,只需在循环中调用您的函数就可以得到您想要的结果:
$displayableUsernames = [];
foreach($usernames as $username) {
$displayableUsernames[] = CheckIfBanned($username);
}
使用上面的代码片段,您可以解析纯文本用户名列表,并将其添加到可以使用的可显示用户名数组中。
但据我所知,这是一个需要完成每隔时间从数据库中请求用户用户名的过程。
因此,如果您使用了一个使用您的函数获取用户用户名的Eloquent Accessor方法,它可能是一个更简洁,更优雅的解决方案:
class User extends Eloquent {
public function getUsernameAttribute($value)
{
return CheckIfBanned($value);
}
}
Eloquent访问器方法的文档可以在这里找到:http://laravel.com/docs/4.2/eloquent#accessors-and-mutators
编辑:
如果您的CheckIfBanned()
功能位于Helper
课程范围内,则可以使用User.php
模型类中的以下代码进行调用:
use App\Controllers\Helper;
class User extends Eloquent {
public function getUsernameAttribute($value)
{
return Helpers::CheckIfBanned($value);
}
}
请注意,我不知道您的Helper
类的实际命名空间是什么,因此您必须使用正确的命名空间导入Helper
类。
在实践中使用此访问器,您只需调用以下代码:
$user = User::find($id);
$username = $user->username; // This will automatically call your CheckIfBanned() function