【问题标题】:Laravel 5.3 Update with string containing question markLaravel 5.3 使用包含问号的字符串更新
【发布时间】:2017-01-06 10:03:31
【问题描述】:

我目前正在尝试更新我的数据库中的一个字段。这是一个简单的文本字段,如果字符串包含问号 (?),我会遇到问题。

例子:

test ? test

发生的事情是它看到了“?”并认为它具有约束力。实际上它只是一个问题。我试过用\DB::raw() 包裹它,但它不起作用。

以前有没有其他人遇到过这种情况?

【问题讨论】:

  • 如果是字符串,给它加引号。
  • 你能不能把它放在双引号里然后像"\?"一样在它前面加上一个反斜杠,甚至不确定你是否需要反斜杠我认为只有引号就足够了,看到更多会很好代码虽然
  • 我有 \DB::raw("'{$description}'") 但添加一个 \ 没有任何作用。
  • 似乎有一些缓存,但 DB raw 确实有效。我之前没有注意到这种情况发生,所以如果某个地方出现编码问题,我会徘徊,
  • 你能显示你用来更新这个字段的代码吗?

标签: php laravel eloquent


【解决方案1】:

我有一个非常相似的问题,就我而言,我正在尝试保存一个包含“?”的网址使用 eloquent 到数据库。我的解决方法是替换“?”使用另一个字符,例如,保存时为“^”,读取时则相反。我使用eloquent mutators 来做到这一点,所以在我的雄辩模型中,我有这样的东西。

public function getFieldNameAttribute($value)
{
    return str_replace("^", "?", $value);
}

public function setFieldNameAttribute($value)
{
    $this->attributes['field_name'] = str_replace("?", "^", $value);
}

但是,您需要找到一个可以保证不会出现在您要保存的值中的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多