Как я могу удержать Laravel Blade от удаления буквенно-цифровых строк? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть поле идентификатора на моей модели, которое состоит из буквенно-цифровых строк, таких как 6f7fb019-1a57-4beb-916a-8605868c19a2

В Blade я пытаюсь {{ $var->ID }}

Blade удаляет большинство изэта строка, даже когда я обертываю ее в {!! !!}

Однако, когда я оборачиваю буквальную строку в двойные кавычки, такие как {{ " 6f7fb019-1a57-4beb-916a-8605868c19a2" }}, все хорошо.

код шаблона лезвия:

    @foreach($work_requests as $work_request)
        <tr>
            <th scope="row">{{$work_request->ID}}</th>
            <td>{{$work_request->STATUS}}</td>
            <td>{{$work_request->created}}</td>
        </tr>
    @endforeach

необработанная модель от dd

    #attributes: array:4 [▼
      "ID" => "6f7fb019-1a57-4beb-916a-8605868c19a2"
      "JSON" => ""
      "STATUS" => " [ CONFIDENTIAL ] "
      "created" => 1550623543
    ]

от контроллера:

public function index()
{
    $work_requests = WorkRequest::orderby('created','desc')->paginate(25);
    dd($work_requests);
    return view('workrequests.index')->with('work_requests',$work_requests);
}

ДОПОЛНИТЕЛЬНОЕ ОБЪЯСНЕНИЕ

Так что для этих значений я получаю соответствующий результат, напечатанный:

  • 6f7fb019-1a57-4beb-916a-8605868c19a2 возвращает 6
  • c904b27a-9b85-4782-a2de-deea0b9bbf18 возвращает 0
  • 53da0384-a34-413bb73-b3e7b1d589ef возвращает 53
  • 86dd13d5-dd90-4734-9258-fba6742dd574 возвращает 86

1 Ответ

0 голосов
/ 21 февраля 2019

Попробуйте с компактным, но используйте его в имени переменной (будьте осторожны с синтаксисом):

return view('workrequests.index', compact ('work_requests'));

Для чисел, выходящих из блейда - это возможно потому, что по умолчанию первичный ключв Laravel приводится как int как:

(int) "6f7fb019-1a57-4beb-916a-8605868c19a2" == 6

Это все еще строка, но если вы вызываете ее через идентификатор модели, она проходит через метод __get () и становится int.Вы можете сказать Laravel, чтобы убедиться, что это строка, приведя ее в модель :

protected $casts = ['id' => 'string'];

Вы также можете перейти непосредственно к функции id иСкажите Laravel не увеличивать, что может помочь в вашем случае более точно, чем переменная $casts:

public $incrementing = false;

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...