我正在使用Laravel 5.2。我正在寻找雄辩的查询用户名,以便创建一个唯一的个人资料页面。我遇到的问题是用户名返回带有空格,例如 John Doe,我需要它返回时没有像 johndoe 或 JohnDoe 这样的空格。谢谢。
public function show($username)
{
try
{
$user = str_replace(' ', '', User::wherename($username)->firstOrFail());
dd($user);
}
catch(ModelNotFoundException $e)
{
return redirect()->action('HomeController@index');
}
}
您可以在
User
模型上创建一个函数,该函数返回不带任何空格的name
。这样:
public function getNameWithoutSpaces() {
return preg_replace('/'s+/', '', $this->name);
}
这样,您可以在任何需要的地方获取不带空格的名称,而无需一直使用 str_replace
函数。
$user = User::wherename($username)->first()
$UserName = preg_replace('/'s+/', '', $user->name);
print_r($UserName );die;
这
可以帮助 -
str_replace(" ", "", "John Doe");
或者如果有多个空格(连续)-
preg_replace('/'s+/', '', "John Doe");
$user = User::wherename($username)->first();
if($user){
$user_name = preg_replace('/'s+/', '', $user->name); //or other column that you need to clean
return dd($user_name);
}
return 'No user found!';
更新
经过讨论,我认为您需要使用蛞蝓:
$user = User::findBySlug($username);
$name = $user->name;
在这种情况下,您的表格中有两列:名称(例如"John Doe")和 slug("JohnDoe"或"johndoe"或"John_Doe"等)。
原答案
如果要删除字符串开头和结尾的空格,请尝试修剪它们:
$userOriginal = User::where('name', $username)->first();
$user = trim($userOriginal->name);
要删除所有空格,请使用以下命令:
$user= str_replace(' ', '', User::where('name', $username-)->first()->name);
您可以在用户模型上定义 getter
public function getNameAttribute() {
return preg_replace('/'s+/', '', $this->attribute['name'])
}
之后,当您尝试获取$user->name
时,它总是没有空格。