2017-01-19 4 views
0

Мой код выглядит так:Как использовать замену в выбранном запросе? (Laravel 5,3)

public function getList() 
{ 
    $query = self::join('master_datas','master_datas.id','=','users_banks.bank_id') 
     ->orderBy('account_name') 
     ->findAll([ 
        'users_banks.*', 
        'master_datas.name', 
        DB::raw('replace(master_datas.information->logo, \'"\', "")') 
      ]); 
    return $query; 
} 

Итак, у меня есть информация поле. Информация о поле в виде JSON как это:

{"logo": "icon-chelsea.png", "branch": "london", "owner": "chelsea"} 

Когда я звоню information->logo, результат: "icon-chelsea.png".

Я хочу удалить двойные кавычки. Я попытался использовать мой код выше, используя замену. Но это не сработало

Я добавил use Illuminate\Support\Facades\DB;. Но, это то же самое

Есть ли кто-нибудь, кто может мне помочь?

+0

Когда вы говорите, вы хотите «удалить двойные кавычки». Как они были сохранены в базе данных таким образом? Исправьте точку входа, а не точку выхода. Кроме того, строки всегда должны быть инкапсулированы в одну/двойную кавычку, если вам нужно постоянное представление значения, то это нечто совершенно другое. – Ohgodwhy

+0

Как вы называете «информация-> логотип»? – Tom

+0

Неужели это JSON String? Если вы 'json_decode()' it, у него больше нет двойных кавычек. Но если вы удалите двойную кавычку вручную, она больше не будет действительной строкой JSON – RiggsFolly

ответ

1

Для красноречивых вы можете create a mutator хранить logo строки без двойных кавычек:

public function setLogoAttribute($value) 
{ 
    $this->attributes['logo'] = str_replace('"', '', $value); 
} 

Если вы получаете данные где-то использовать an accessor когда вы получаете данные:

public function getLogoAttribute($value) 
{ 
    return str_replace('"', '', $value); 
} 
Смежные вопросы