0
0

More than 3 years have passed since last update.

Laravelのpluck()でunicodeが表示される。

Posted at

問題

formに初期値を入れたくて、LaravelのEloquentで取得した行から
該当するカラムを取得する際に、unicodeでエンコードされた文字列が出力される。

controller.php
$content  = Model::where('id', $id)->first()->pluck('content');

return view('admin.event_chat')
       ->with('content',   $content)
view.blade.php
<form action="/Admin/eventChatSend" method="POST">
      @csrf
      @if (isset($content))
          <input type="text" name="content" value="{{ $content }}">
      @else
          <input type="text" name="content" placeholder="定型文はありません">
      @endif
      <input type="submit" value="送信">
</form>

このように実装した場合、unicodeでエンコードされた文字列contentが挿入されます。

解決案

まぁ、pluck()を通すとunicodeでエンコードされるということは
当たり前のようにpluck()を使わなければいいのでView側で取ってくるか$content = $row->contentで取得すればいいです。前者で実装してみました。

controller.php
$row  = Model::where('id', $id)->first();

return view('admin.event_chat')
       ->with('row',   $row)
view.blade.php
<form action="/Admin/eventChatSend" method="POST">
      @csrf
      @if (isset($row))
          <input type="text" name="content" value="{{ $row->content }}">
      @else
          <input type="text" name="content" placeholder="定型文はありません">
      @endif
      <input type="submit" value="送信">
</form>

$rowがある時は必ず、contentがある程での実装となっています。

まとめ

Laravelでカラムを取得するpluck()を通すとunicodeでエンコードされてしまうので
$row->contentで回避するか、View川で取得すると
utf8でエンコードされた文字列が返ってきます。
どなたかpluck()で文字列をutf8でエンコードする方法をご存知の方はコメントお願いします!!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0