Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回不带空格的数据_Php_Laravel_Eloquent - Fatal编程技术网

Php 返回不带空格的数据

Php 返回不带空格的数据,php,laravel,eloquent,Php,Laravel,Eloquent,我使用的是Laravel5.2。我正在寻找查询用户名与雄辩,以创建一个独特的个人资料页。我遇到的问题是用户名返回时带有空格,例如John Doe,我需要它返回时没有空格,比如johndoe或johndoe。谢谢 public function show($username) { try { $user = str_replace(' ', '', User::wherename($username)->firstOrFail()); dd($

我使用的是Laravel5.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');
    }
}
这有助于-

str_replace(" ", "", "John Doe");
或者如果有多个空格(连续)-

这有助于-

str_replace(" ", "", "John Doe");
或者如果有多个空格(连续)-


更新

经过讨论,我认为您需要使用:

在本例中,表中有两列:name('JohnDoe',例如)和slug('JohnDoe'或'JohnDoe'或'JohnDoe'等)

原始答案

如果要删除字符串开头和结尾的空格,请尝试删除它们:

要删除所有空格,请使用以下命令:

$user= str_replace(' ', '', User::where('name', $username-)->first()->name);

更新

经过讨论,我认为您需要使用:

在本例中,表中有两列:name('JohnDoe',例如)和slug('JohnDoe'或'JohnDoe'或'JohnDoe'等)

原始答案

如果要删除字符串开头和结尾的空格,请尝试删除它们:

要删除所有空格,请使用以下命令:

$user= str_replace(' ', '', User::where('name', $username-)->first()->name);

您可以在
用户
模型上创建一个返回
名称
且不带空格的函数。像这样:

public function getNameWithoutSpaces() {
    return preg_replace('/\s+/', '', $this->name);
}

通过这种方式,您可以在需要的任何位置获得不带空格的名称,而不必一直使用
str\u replace
函数。

您可以在
用户
模型上创建一个返回
名称
而不带空格的函数。像这样:

public function getNameWithoutSpaces() {
    return preg_replace('/\s+/', '', $this->name);
}
$user = User::wherename($username)->first()

$UserName = preg_replace('/\s+/', '', $user->name);
print_r($UserName );die;

通过这种方式,您可以在需要的任何位置获得不带空格的名称,而无需始终使用
str\u replace
函数。

您可以在用户模型上定义getter

$user = User::wherename($username)->first()

$UserName = preg_replace('/\s+/', '', $user->name);
print_r($UserName );die;
public function getNameAttribute() {
    return preg_replace('/\s+/', '', $this->attribute['name'])
}

之后,当您尝试获取
$user->name
时,它总是没有空格。

您可以在您的用户模型上定义getter

public function getNameAttribute() {
    return preg_replace('/\s+/', '', $this->attribute['name'])
}


之后,当您尝试获取
$user->name
时,它总是没有空格。

当我获取dd时,空值消失了,但我刚刚获取“”,您的查询似乎没有返回任何用户,因此请尝试使用我更新的代码。如果
users
表中有
name
列,它应该可以工作。也可以通过
dd($userOriginal)
进行双重检查;它仍在为我返回“”。数据库中的用户名是John Doe,与此完全相同。
first()
是集合的实例,如何应用trim???)您对列应用trim
trim($userOriginal->column)
或者我不知道这个技巧???)好的,看起来您的查询没有返回任何结果(null)。我问过你关于表结构的问题,如果没有这些信息,没有人会给你100%的工作代码。当我得到dd时,空值消失了,但是我得到了“”,你的查询似乎没有返回任何用户,所以尝试使用我更新的代码。如果
users
表中有
name
列,它应该可以工作。也可以通过
dd($userOriginal)
进行双重检查;它仍在为我返回“”。数据库中的用户名是John Doe,与此完全相同。
first()
是集合的实例,如何应用trim???)您对列应用trim
trim($userOriginal->column)
或者我不知道这个技巧???)好的,看起来您的查询没有返回任何结果(null)。我已经问过你关于表结构的问题,如果没有这些信息,没有人会给你100%的工作代码。当我拿回dd时,空值不见了,但是我刚刚得到“”尝试在替换之前打印值当我拿回dd时,空值不见了,但是我刚刚得到“”尝试在替换之前打印该值。它返回找不到用户。但是,当我在url中添加空格时,它将返回用户。如果找不到用户,则您必须检查您在url中传递的
$username
参数!比如说,我通过了约翰多。它返回null。我如何确保我传递的内容能够与记录匹配?例如,我传递johndoe它会找到John Doe吗?@GarethFrazer要做到这一点,您必须首先确保将数据保存到数据库中。因此,您可以使用空格或“否”保存它们。它将返回未找到的用户,但当我在url中放置空格时,它将返回用户。如果未找到用户,则必须检查您在url中传递的
$username
参数!比如说,我通过了约翰多。它返回null。我如何确保我传递的内容能够与记录匹配?例如,我传递johndoe它会找到John Doe吗?@GarethFrazer要做到这一点,您必须首先确保将数据保存到数据库中。因此,您可以使用空格或“否”来保存它们。最好的答案是,最好忘记访问器(在模型上))
$user=user::where('name',$username)->getNameWithoutSpaces()->first();dd(用户)这是我现在拥有的,但它说的是对undefined方法的调用。您必须在您的模型上使用此函数,而不是在查询生成器上。因此,您应该做的是
User::where('name',$username)->first()->getNameWithoutSpaces()
这似乎对我不起作用。它不会删除空间。请尝试使用
preg\u replace
,这样会得到更好的结果。我更新了我的答案。最好的答案,真的最好忘记了访问器(在模型上))
$user=user::where('name',$username)->getNameWithoutSpaces()->first();dd(用户)这是我现在拥有的,但它说的是对undefined方法的调用。您必须在您的模型上使用此函数,而不是在查询生成器上。因此,您应该做的是
User::where('name',$username)->first()->getNameWithoutSpaces()
这似乎对我不起作用。它不会删除空间。请尝试使用
preg\u replace
,这样会得到更好的结果。我更新了我的答案。