2017-01-19 7 views
0

私のコードは次のようである:だからselectクエリで置き換えを使用する方法は? (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"

二重引用符を削除します。私はreplaceを使って上記のコードを好きにしました。しかし、それは動作しませんでした

私はuse Illuminate\Support\Facades\DB;も追加しました。しかし、それは同じです

私を助けることができる人はいますか?あなたはcreate a mutator二重引用符なしlogo文字列を格納することができ雄弁について

+0

をあなたは '二重引用符を削除する '必要があります。彼らはどのようにしてデータベースに格納されましたか?出口点ではなく入口点を修正します。さらに、文字列を一重引用符で囲む必要があります。値の定数表現が必要な場合は、完全に異なるものを使用してください。 – Ohgodwhy

+0

「情報 - >ロゴ」はどうやって呼んでいますか? – Tom

+0

これは本当にJSON Stringですか? 'json_decode()'を実行した場合、二重引用符はそれ以上ありません。しかし、二重引用符を手動で削除すると、有効なJSON文字列になりません – RiggsFolly

答えて

1

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

あなたがデータ取得しているとき、どこかからのデータがan accessorを使用して取得する場合:あなたが言う

public function getLogoAttribute($value) 
{ 
    return str_replace('"', '', $value); 
} 
関連する問題